Página 1 de 2
Integração com IFOOD não retornando token
Enviado: 10 Set 2020 14:02
por ANDRIL
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.
Código: Selecionar todos
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.
Integração com IFOOD não retornando token
Enviado: 14 Set 2020 11:36
por welington
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.
Integração com IFOOD não retornando token
Enviado: 14 Set 2020 15:13
por JoséQuintas
Na comunicação json, tem horas que é POST e tem horas que é GET
Confirmou isso?
Integração com IFOOD não retornando token
Enviado: 14 Set 2020 16:52
por Giovany Vecchi
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
Código: Selecionar todos
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:
Código: Selecionar todos
::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.
Integração com IFOOD não retornando token
Enviado: 14 Set 2020 17:48
por JoséQuintas
Não seria algo assim:
Código: Selecionar todos
VAR cLogin INIT "https://pos-api.ifood.com.br/oauth/token?client_id=xxx&client_secret=xxx&username=xxx&password=xxx&grant_type=password"
Integração com IFOOD não retornando token
Enviado: 14 Set 2020 19:19
por Giovany Vecchi
Oi Quintas
Procura saber qual tipo de autenticação usa
Integração com IFOOD não retornando token
Enviado: 14 Set 2020 22:53
por Vlademiro
https://app.swaggerhub.com/apis/daniela ... d-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á.
Integração com IFOOD não retornando token
Enviado: 15 Set 2020 08:47
por ANDRIL
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.
Código: Selecionar todos
$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
Integração com IFOOD não retornando token
Enviado: 15 Set 2020 11:53
por ANDRIL
Tentei portar o código PHP para Harbour usando cUrl.
Código: Selecionar todos
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.
Integração com IFOOD não retornando token
Enviado: 15 Set 2020 12:24
por JoséQuintas
Código: Selecionar todos
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
Integração com IFOOD não retornando token
Enviado: 15 Set 2020 15:34
por AutomoSistema
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 !!!
Integração com IFOOD não retornando token
Enviado: 15 Set 2020 16:11
por Itamar M. Lins Jr.
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.
Integração com IFOOD não retornando token
Enviado: 15 Set 2020 16:11
por asimoes
Quintas,
O teu código funcionou?
Integração com IFOOD não retornando token
Enviado: 15 Set 2020 17:30
por janio
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
Integração com IFOOD não retornando token
Enviado: 15 Set 2020 18:09
por ANDRIL
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?
Código: Selecionar todos
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" }