Clipper On Line • Ver Tópico - Integração com IFOOD não retornando token

Integração com IFOOD não retornando token

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Integração com IFOOD não retornando token

Mensagempor ANDRIL » 10 Set 2020 14:02

Alguem conseguiu fazer a integração com o IFOOD, não estou conseguindo passar do primeiro passo que é obter o token que será usado nas demais requisições.

cUrl:="https://pos-api.ifood.com.br/oauth/token"
cMetodo="POST"

oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0" )
oServer:Open( cMetodo, cURL, .F. )
oServer:SetRequestHeader("accept", "application/json")
oServer:SetRequestHeader("Content-Type", "x-www-form-urlencoded")
cJson = '{"client_id":"usersofthose",;
             "client_secret":"senhasofthouse",;
             "grant_type":"password",;
             "username":"userRestaurante",;
             "password","senhaRestaurante"}
oServer:Send( cJson )
cRetorno := oServer:ResponseBody()

Recebo como retorno caracteres estranhos quando deveria receber o Jason com o token possivelmente em base64. Se mudo content-type recebo erro HTTP 401.

Enfim, se alguém tiver alguma dica. O suporte do IFOOD é só via formulário e demora muito, para quem esta desenvolvendo ter um canal direto é o ideal, via formulário mata o pião.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1271
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Integração com IFOOD não retornando token

Mensagempor welington » 14 Set 2020 11:36

Ola Bom dia, estou tentando fazer a integração do ifood acontece o mesmo problema Que o seu. Se alguém poder ajudar Da uma dica.
welington
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 15
Data de registro: 24 Ago 2019 15:21
Cidade/Estado: são paulo
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

Integração com IFOOD não retornando token

Mensagempor JoséQuintas » 14 Set 2020 15:13

Na comunicação json, tem horas que é POST e tem horas que é GET
Confirmou isso?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Integração com IFOOD não retornando token

Mensagempor Giovany Vecchi » 14 Set 2020 16:52

Ola Quintas, boa tarde.
Nunca mexi com IFOOD, mais a logica tem que ser apenas 2
Sistema oAuth1 ou oAuth2
Hoje todos usam o sistema oAuth2

Tenta esta logica aqui

cJson := '{"client_id":"usersofthose",;
           "&client_secret":"senhasofthouse",;
           "&grant_type":"client_credentials",;
           "&username":"userRestaurante",;
           "&password","senhaRestaurante"}'
oServer:Send( cJson )


Se não der certo tenta tirar o &

Mais a lógica do oAuth2 é primeiramente buscar o Token com apenas client_id e client_secret.
Depois de adquirir o token voce loga com o token assim neste exemplo:

  ::cBodyTxt := hb_base64Encode(userRestaurante+":"+senhaRestaurante)

  ::oHttpRegistro := TOleAuto():New("Msxml2.ServerXMLHTTP.5.0")

  ::oHttpRegistro:SetTimeouts(40000,40000,40000,40000)

  uRet := ::oHttpRegistro:Open("POST",::cUrlPostRegistro,.f.)

  ::oHttpRegistro:SetRequestHeader( "Content-Type"     , "application/x-www-form-urlencoded" )
  ::oHttpRegistro:SetRequestHeader( "Authorization"    , "Bearer "+::cAccessTokenReturn ) //cAccessTokenReturn é o token de autenticação
 
  Try
    ::oHttpRegistro:Send(::cBodyTxt)
  Catch oError
    cErrorTmp :="Error: "  + Transform(oError:GenCode, nil) + CRLF +;
                "SubC: "   + Transform(oError:SubCode, nil) + CRLF +;
                "OSCode: "  + Transform(oError:OsCode,  nil) + CRLF +;
                "SubSystem: " + Transform(oError:SubSystem, nil) + CRLF +;
                "Mensagem: " + oError:Description

    MsgStop("Erro ao chamar metodo SEND de HttpRequest (Registro envio)."+CRLF+;
            Replicate("-",79)+CRLF+cErrorTmp,"Procedimento Abortado")
    Return nil
  End Try



Agora se for oAuth1 não sei
Quando precisei implantar no sistema ja foi no oAuth2 direto.
Giovany Vecchi
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 19
Data de registro: 28 Mai 2014 17:32
Cidade/Estado: Jales / SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Integração com IFOOD não retornando token

Mensagempor JoséQuintas » 14 Set 2020 17:48

Não seria algo assim:

VAR cLogin      INIT "https://pos-api.ifood.com.br/oauth/token?client_id=xxx&client_secret=xxx&username=xxx&password=xxx&grant_type=password"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Integração com IFOOD não retornando token

Mensagempor Giovany Vecchi » 14 Set 2020 19:19

Oi Quintas
Procura saber qual tipo de autenticação usa
Giovany Vecchi
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 19
Data de registro: 28 Mai 2014 17:32
Cidade/Estado: Jales / SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Integração com IFOOD não retornando token

Mensagempor Vlademiro » 14 Set 2020 22:53

https://app.swaggerhub.com/apis/danielamorais/ifood-apis/1.0

Da uma olhada no swaggerhub , talvez a documentação esteja lá.

Outras pessoas já passaram pelo mesmo problema e postaram a documentação lá.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Integração com IFOOD não retornando token

Mensagempor ANDRIL » 15 Set 2020 08:47

Não creio que seja questão de documentação.

O método requerido é o POST, esta correto. O formato é JSON, está correto. O content-type diz que é multipart/form-data, já tentei e não deu. Tentei com x-www-form-urlencoded e application/json e não deu também.

É algo com o Harbour usando MSXML2.ServerXMLHTTP.5.0 que não consegue usar o oAuth. Não consigo descobrir o porque.
Digo isto por que consegui fazer a comunicação normalmente com o código PHP abaixo usando cUrl.

$cUrl = 'https://pos-api.ifood.com.br/oauth/token'; 
   $senha1="111111";

   curl_setopt($cr, CURLOPT_URL, $cUrl);
   //definindo a url de busca
   curl_setopt($cr, CURLOPT_RETURNTRANSFER, true);   
   //definino que o método de envio, será POST
   curl_setopt($cr, CURLOPT_POST, TRUE);   
   //definindo os dados que serão enviados
   curl_setopt($cr, CURLOPT_POSTFIELDS, "client_id=".$client_id."&client_secret=".$client_secret."&grant_type=password"."&username=$senha1&password=$senha1");
   
   curl_setopt($cr, CURLOPT_HTTPHEADER, array(
     "Accept: application/json",
     "content-type", "multipart/form-data"));

$retorno = curl_exec($cr);   
//fechando-o para liberação do sistema.
curl_close($cr);
//fechamos o recurso e liberamos o sistema...   
//mostrando o conteúdo...
echo $retorno;


Só com Harbour não estou conseguindo a comunicação.

Harbour Make (hbmk2) 3.2.0dev (r2015-02-20 10:40)
Copyright (c) 1999-2013, Viktor Szakáts
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1271
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Integração com IFOOD não retornando token

Mensagempor ANDRIL » 15 Set 2020 11:53

Tentei portar o código PHP para Harbour usando cUrl.

 cr := curl_easy_init() 
                  curl_easy_setopt(cr, HB_CURLOPT_URL, cURL)
               //definindo a url de busca
               curl_easy_setopt(cr, HB_CURLOPT_RETURNTRANSFER, .t.)
            //definino que o método de envio, será POST
               curl_easy_setopt(cr, HB_CURLOPT_POST, .t.)
               //definindo os dados que serão enviados
               curl_easy_setopt(cr, HB_CURLOPT_POSTFIELDS, Lista)
               
               curl_easy_setopt(cr, HB_CURLOPT_HTTPHEADER, array("Accept: application/json","content-type", "multipart/form-data"))
                
              cStr = curl_easy_perform( cr )
            curl_easy_reset( cr )
              curl_easy_cleanup( cr )


Porem não consigo compilar. Embora conste no harbour as funções instaladas não reconhece.

hbmk2 -find curl

hbcurl.hbc (instalado):
curl_easy_cleanup()
curl_easy_dl_buff_get()
curl_easy_duplicate()
curl_easy_escape()
curl_easy_getinfo()
curl_easy_init()
curl_easy_pause()
curl_easy_perform()
curl_easy_recv()
curl_easy_reset()
curl_easy_send()
curl_easy_setopt()
curl_easy_strerror()
curl_easy_unescape()
curl_escape()
curl_getdate()
curl_global_cleanup()
curl_global_init()
curl_unescape()
curl_version()
curl_version_info()
__HBEXTERN__HBCURL__()

Ao compilar da a sugestão
hbmk2: Dica: Adicionar opçπo 'hbcurl.hbc' faltando nas funç⌡es:
curl_global_cleanup(), curl_easy_cleanup(), curl_easy_reset(),
curl_easy_perform(), curl_easy_setopt(), curl_easy_init()

Ao colocar na compilação o hbcurl.hbc da falta da lib
hbmk2: Linkando... monitorPARCEIRO-IFOOD.exe
e:/hb32/comp/mingw/bin/../lib/gcc/mingw32/4.6.1-dw2/../../../../mingw32/bin/ld.e
xe: cannot find -llibcurl
collect2: ld returned 1 exit status
hbmk2[junta-IFOOD]: Erro: Executando linkeditor. 1
e:\hb32\comp\mingw\bin\gcc.exe ".hbmk/win/mingw/monitorPARCEIRO-IFOOD.o" .hbmk/w
in/mingw/erroparceiro.o ".hbmk/win/mingw/_hbmkaut_monitorPARCEIRO-IFOOD.o" -m
windows -Wl,--start-group -lgtwvg -lhbwin -lpng -lhbcurl -llibcurl -lhbct -lhbti
p -lhbxpp -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca
-lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx
-lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon
-lhbmainwin -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspoo
l -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi
32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -s -o"monitor
PARCEIRO-IFOOD.exe" -Le:/hb32/lib/win/mingw


Na minha pasta \hb32\lib\win\mingw constam
-libhbcurl.a
-libhbcurls.a

más não reconhecem.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1271
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Integração com IFOOD não retornando token

Mensagempor JoséQuintas » 15 Set 2020 12:24

METHOD MicrosoftPost( cProtocol ) CLASS IFoodClass

   LOCAL oServer

   hb_Default( @cProtocol, "POST" )
   oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP" )
   oServer:Open( cProtocol, ::cLogin, .F. )
   oServer:Open( cProtocol, ::cURL, .F. )
   oServer:SetRequestHeader( "Content-Type", "application/json" )
   oServer:Send( ::cTxtEnvio )
   oServer:WaitForResponse( 2000 )
   ::cTxtRetorno := oServer:ResponseBody()

   RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Integração com IFOOD não retornando token

Mensagempor AutomoSistema » 15 Set 2020 15:34

Boa tarde, desculpa em entrar neste assunto, IFOOD comprou uma SoftHouse grande em São Paulo e vai ofertar para as empresas que trabalha no seguimento Gastronômico ERPs por R$ 50,00 Mensal com carência de 6 meses para começar PAGAR !!!
AutomoSistema
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 87
Data de registro: 27 Nov 2015 21:09
Cidade/Estado: Jardim-MS
Curtiu: 0 vez
Mens.Curtidas: 4 vezes

Integração com IFOOD não retornando token

Mensagempor Itamar M. Lins Jr. » 15 Set 2020 16:11

Ola!
ERPs por R$ 50,00 Mensal com carência de 6 meses para começar PAGAR !!!

Tem um post meu no bate papo, exatamente sobre isso. Como eu vou investir em uma ferramenta de 6Mil reais se o mercado está dessa maneira ?
Não sei qual é a mágica de atendimento desse pessoal. Devem está pagando menos de um salário para o analista de suporte.
50,00 por mês, quantas lojas(clientes) tem que ter, para pagar um salário ao funcionário deles ? A conta não fecha.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6951
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

Integração com IFOOD não retornando token

Mensagempor asimoes » 15 Set 2020 16:11

Quintas,

O teu código funcionou?
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Integração com IFOOD não retornando token

Mensagempor janio » 15 Set 2020 17:30

Boa tarde, desculpa em entrar neste assunto, IFOOD comprou uma SoftHouse grande em São Paulo e vai ofertar para as empresas que trabalha no seguimento Gastronômico ERPs por R$ 50,00 Mensal com carência de 6 meses para começar PAGAR !!!


É por isso que não quero nem papo com iFood, assim como nao quero com Bematech
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Integração com IFOOD não retornando token

Mensagempor ANDRIL » 15 Set 2020 18:09

AutomoSistema escreveu:Boa tarde, desculpa em entrar neste assunto, IFOOD comprou uma SoftHouse grande em São Paulo e vai ofertar para as empresas que trabalha no seguimento Gastronômico ERPs por R$ 50,00 Mensal com carência de 6 meses para começar PAGAR !!!

Não sabia desta informação. Acho que vão dar um tiro no pé e começar a sujar a marca deles. Estão atualmente em negócio muito lucrativo com pouca manutenção ao cliente o que parece. Já com um software com R$ 50,00 mensal só vão arrumar para cabeça e terão que melhorar em muito a infraestrutura deles para aguentar a demanda.
Também relutei muito em integrar com eles, mas meus clientes do segmento 95% usam eles e já não aguentam mais tirar pedido lá e passar para o sistema, então, ou voce integra ou mudaremos para um que já tem isso. Infelizmente é assim, tem aos montes programas já integrados com ele.

José, no seu código colocou Open 2 vezes, está correto?
oServer:Open( cProtocol, ::cLogin, .F. )
08      oServer:Open( cProtocol, ::cURL, .F. )


No caso cLogin seria montado de que forma, se no código original no Json passa-se

{"client_id":"usersofthose",;
"client_secret":"senhasofthouse" }
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1271
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro