Página 2 de 3

Não retorna o token api nova ifood

Enviado: 23 Jul 2021 18:11
por JoséQuintas

Código: Selecionar todos

METHOD Token( ... ) CLASS IFoodClass

   LOCAL cUrl  := "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/token"

   cUrl += "?grantType=client_credentials" + ;
           "&clientId=" + ::cClientId + ;
           "&clientSecret=" + ::cSecret + ;
           "&authorizationCode=" + ;
           "&authorizationCodeVerifier=" + ;
           "&refreshToken="

   ::Post( "POST", cUrl, "" )
   ::aRespToken := ::aJson

   RETURN ::aJson

Não retorna o token api nova ifood

Enviado: 23 Jul 2021 18:12
por JoséQuintas
Atenção ao cliente ID.
Existe mais de um no ifooda.

Não retorna o token api nova ifood

Enviado: 24 Jul 2021 11:11
por ANDRIL
Comecei a fazer a integração com eles e parei justamente por que não conseguia obter o token. Tentei de tudo que foi jeito e não deu, algumas vezes conforme o content-type retorna uma string criptografada como a que o colega postou.
Então fiz um teste via php e retornou o token normalmente. O problema parece ser com o content-type 'multipart/form-data' no Harbour.
O código que o Quintas postou, está com parâmetros diferentes do que usei e também outra URL

Código: Selecionar todos

LOCAL cUrl  := "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/token"

   cUrl += "?grantType=client_credentials" + ;
           "&clientId=" + ::cClientId + ;
           "&clientSecret=" + ::cSecret + ;
           "&authorizationCode=" + ;
           "&authorizationCodeVerifier=" + ;
           "&refreshToken="
O meu

Código: Selecionar todos

LOCAL cUrl = 'https://pos-api.ifood.com.br/oauth/token'
cUrl +=  "client_id="+client_id+;
             "&client_secret="+client_secret+;
             "&grant_type=password"+;
             "&username="+username+;
             "&password="+password
 
Como disse com estes parametros e url consegui obter o token via php.

Não gostei deste processo, primeiro obtem o token, este tem uma validade de 1 hora, ainda tem que fazer o polling em até 30 segundos para manter a loja aberta. Isso é muito chato por que no meu caso não integro apenas com o Ifood e acaba escravisando o nosso sistema.
E outra, mexem muito na api, sempre tem campos novos e nova versão obrigando também acompanharmos antes que desativem a versão antiga da api.
Parei por enquanto a integração com eles. Vou acompanhar este tópico.

Não retorna o token api nova ifood

Enviado: 24 Jul 2021 15:04
por JoséQuintas
ANDRIL escreveu:rimeiro obtem o token, este tem uma validade de 1 hora, ainda tem que fazer o polling em até 30 segundos para manter a loja aberta.
Não, é mais que isso.

Não retorna o token api nova ifood

Enviado: 24 Jul 2021 15:10
por JoséQuintas
ifood.png
O Token vale por 22.000 segundos, cerca de 6 horas.

Não retorna o token api nova ifood

Enviado: 24 Jul 2021 16:54
por ANDRIL
José creio que use outro endpoint, nos testes que fiz o token era apenas 1 hora (já faz um tempo que não mexo mais nisso). Devem ter alterado a api.
Teria como postar o código que usa para fazer a comunicação, esse seu método post

Código: Selecionar todos

::Post( "POST", cUrl, "" )
Para comparar com minha chamada, por que com a minha não vai de jeito algum. Vi que vc passa os parametros da url com outra grafia, estão corretos ou depois voce altera para os que pedem na api.
Exemplo: No meu client_id no seu clientId

Não retorna o token api nova ifood

Enviado: 25 Jul 2021 10:30
por JoséQuintas
ANDRIL escreveu:Exemplo: No meu client_id no seu clientId

Código: Selecionar todos

cUrl +=  "client_id="+client_id+;
porque diz que no meu tá diferente?

Não retorna o token api nova ifood

Enviado: 25 Jul 2021 10:35
por JoséQuintas
Existe a API pra quando o aplicativo está na WEB, e pra quando o aplicativo está dentro da empresa.
Tá tudo misturado.
Também a senha/clientid pode ser diferente em cada um dos casos.

Não retorna o token api nova ifood

Enviado: 25 Jul 2021 11:23
por JoséQuintas
ANDRIL escreveu:Comecei a fazer a integração com eles e parei justamente por que não conseguia obter o token. Tentei de tudo que foi jeito e não deu, algumas vezes conforme o content-type retorna uma string criptografada como a que o colega postou.
Conforme já foi mostrado, você está testando a API velha, e não a nova.
Se não me engano eles iam desativar a API velha pra NOVOS usuários.

Código: Selecionar todos

METHOD Post( cProtocolo, cUrl, cEnvio ) CLASS IFoodClass

   LOCAL oServer, cItem

   hb_Default( @cProtocolo, "POST" )
   oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP" )
   oServer:Open( cProtocolo, cUrl, .F. )
   oServer:SetRequestHeader( "Accept", "Application/json" )
   oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
   oServer:Send( cEnvio )
   oServer:WaitForResponse( 2000 )
   ::cResposta := oServer:ResponseBody()
   ::aJson     := hb_JsonDecode( ::cResposta )

   RETURN ::aJson

Não retorna o token api nova ifood

Enviado: 11 Ago 2021 09:24
por JoséQuintas
Nenhuma novidade?

Continuo com o retorno "no jwt token" pra pegar lista de pedidos.

Não retorna o token api nova ifood

Enviado: 11 Ago 2021 16:13
por ANDRIL
JoséQuintas escreveu:Nenhuma novidade?
O código que postou por último esta igual ao meu, mas mesmo assim, não consigo obter o token pelo sistema.
Não tive tempo ainda para rever estas versões da API deles ou achar o motivo caso não seja isso.
JoséQuintas escreveu:Continuo com o retorno "no jwt token" pra pegar lista de pedidos.
O meu só retorna dados criptografados e não o token.

Não retorna o token api nova ifood

Enviado: 11 Ago 2021 17:44
por JoséQuintas
ANDRIL escreveu:O meu só retorna dados criptografados e não o token.
Fui fazer o teste hoje, e pensei que tinha estragado a rotina quando postei ( ou talvez tenha, ao reduzir pra poder postar ).
Aconteceu exatamente isso.

Código: Selecionar todos

   oServer:SetRequestHeader( "Content-Type", "application/json" )
Esse tem que vir em primeiro lugar, não pode ser em segundo ou terceiro.
Caso contrário.... vém parecendo criptografado.

Não retorna o token api nova ifood

Enviado: 11 Ago 2021 17:52
por ANDRIL
Vou ter que parar um dia só para mexer nesta integração com o IFOOD. Tenho que contatar eles, ve se mudou algo nas urls e recomeçar o processo.
Só não tenho tempo e coragem agora para isto. Como disse, via php obtinha normalmente, mas vc disse que há diferença entre web e desktop pode ser por isso que não consigo via harbour.

Não retorna o token api nova ifood

Enviado: 19 Out 2021 21:34
por JoséQuintas
Desvendado o mistério.

NÃO USO IFOOD, estou apenas ajudando outro programador.

Como faz mais de um ano que fiz da outra vez, tinha esquecido tudo.

É só fazer aqueles testes do site do ifood, que lá mesmo já mostra como fazendo usando libcurl.

Só adaptar pra MSXML e pronto.

Agora tudo funciona.

Nota: Os porr. do suporte não sabem dizer isso, só sabem dizer pra usar o postman.

Não retorna o token api nova ifood

Enviado: 17 Jan 2022 10:34
por RCINF
Opa, bom dia...

Tambem estou na luta aqui com esse Ifood@, é o mesmo que conversar com computador, acho que nenhum operador deles entende o que se fala, meu projeto está parado, ta fácil nao...

Só quero as vendas (pedidos), mais nada, só preciso do Link e as Chaves, já rodamos com outras eCommerce, tudo 100%, mas....

Aproveitando, estamos firmes nos Harbour, Wvw, Hwgui, etc... a todo vapor...

Att