Api Ifood

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

Moderador: Moderadores

malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Api Ifood

Mensagem por malcarli »

Tarde devs, começando a apanhar da api do ifood

Como traduzo essa linha de comando do ifood?

Código: Selecionar todos

curl -X POST "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/userCode" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "clientId=db69019a-760d-4d75-b3f5-6da27ea140dd"
Fiz assim, mas retorna caracteres estranhos:

Código: Selecionar todos

Chamando a função:
f_WebSer([POST], [https://merchant-api.ifood.com.br/authentication/v1.0/oauth/userCode])


Static Function f_WebSer(cMetodo, cUrl, cBody)
   Local cRetorno, oSoap

   BEGIN SEQUENCE WITH __BreakBlock()
       oSoap:= Win_OleCreateObject([MSXML2.ServerXMLHTTP.6.0])
   RECOVER
       MsgExclamation([Erro na Criação do Serviço:] + Hb_OsNewLine() + [MSXML2.ServerXMLHTTP.6.0], [Erro])
       Return ([])
   END SEQUENCE

   BEGIN SEQUENCE WITH __BreakBlock()
      oSoap:SetTimeouts(30000, 30000, 30000, 30000)
      oSoap:Open(cMetodo, cUrl, .F.)
   RECOVER
       MsgExclamation([Erro na Abertura do Serviço.], [Erro])
       Return ([])
   END SEQUENCE

   oSoap:SetRequestHeader([accept], [application/json])
   oSoap:SetRequestHeader([Content-Type], [application/x-www-form-urlencoded])
   oSoap:SetRequestHeader([clientId=], [db69019a-760d-4d75-b3f5-6da27ea140dd])

   BEGIN SEQUENCE WITH __BreakBlock()
      If Empty(cBody) .or. cBody == Nil
         oSoap:Send()
      Else
         oSoap:Send(cBody)
      Endif
   RECOVER
       MsgExclamation([Erro na Conexão com o Serviço.], [Erro])
       Return (Nil)
   END SEQUENCE

   oSoap:WaitForResponse(2000)
   cRetorno := oSoap:ResponseBody()
MSGINFO(CRETORNO)

   cRetorno:= oSoap:Responsetext()
MSGINFO(CRETORNO)
   Release oSoap
Return (cRetorno)

Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Api Ifood

Mensagem por alaminojunior »

Minha rotina em xHarbour:

Código: Selecionar todos

Function iFood_AutorizaApp
LOCAL oServer, cResposta, cID, o, cURL, aJSON, nStatus
LOCAL oSql:= SR_GetConnection(), cSql

cID:= seu clientID fornecido pelo iFood
cURL:= "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/userCode?clientId=" + cID
Try
	oServer := CreateObject( "MSXML2.ServerXMLHTTP.6.0" )
Catch o
   oServer := CreateObject( "MSXML2.ServerXMLHTTP.5.0" )
End
oServer:Open( "POST", cURL, .F. )
oServer:SetRequestHeader( "User-Agent"  , "Delivery" ) // algo para identificar sua app
oServer:SetRequestHeader( "Accept"      , "*/*" )
oServer:SetRequestHeader( "Connection"  , "keep-alive" )
oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
oServer:Send()
DO WHILE oServer:readyState <> 4
   oServer:WaitForResponse( 1000 )
ENDDO
nStatus:= oServer:Status
if nStatus = 200
	cResposta:= oServer:ResponseText
	hhash:= hash()
	aJson:= hb_JsonDecode( cResposta, @hhash )
	
	cEditUserCode = hhash['userCode']
	oEditUserCode:Refresh()
	
	cAuthorizathionCodeVerifier = hhash['authorizationCodeVerifier']

	oServer = nil
	hHash = nil
	HB_GcAll(.t.)
	oOwnerButton2:Enable()
else
	MsgExclamation( oServer:ResponseText, str(nStatus) )
endif
RETURN nil
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
cleitonlc2025
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 25 Out 2024 11:47
Localização: Cariacica/ES

Api Ifood

Mensagem por cleitonlc2025 »

malcarli escreveu:Tarde devs, começando a apanhar da api do ifood

Como traduzo essa linha de comando do ifood?

Código: Selecionar todos

curl -X POST "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/userCode" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "clientId=db69019a-760d-4d75-b3f5-6da27ea140dd"
Fiz assim, mas retorna caracteres estranhos:

Código: Selecionar todos

Chamando a função:
f_WebSer([POST], [https://merchant-api.ifood.com.br/authentication/v1.0/oauth/userCode])


Static Function f_WebSer(cMetodo, cUrl, cBody)
   Local cRetorno, oSoap

   BEGIN SEQUENCE WITH __BreakBlock()
       oSoap:= Win_OleCreateObject([MSXML2.ServerXMLHTTP.6.0])
   RECOVER
       MsgExclamation([Erro na Criação do Serviço:] + Hb_OsNewLine() + [MSXML2.ServerXMLHTTP.6.0], [Erro])
       Return ([])
   END SEQUENCE

   BEGIN SEQUENCE WITH __BreakBlock()
      oSoap:SetTimeouts(30000, 30000, 30000, 30000)
      oSoap:Open(cMetodo, cUrl, .F.)
   RECOVER
       MsgExclamation([Erro na Abertura do Serviço.], [Erro])
       Return ([])
   END SEQUENCE

   oSoap:SetRequestHeader([accept], [application/json])
   oSoap:SetRequestHeader([Content-Type], [application/x-www-form-urlencoded])
   oSoap:SetRequestHeader([clientId=], [db69019a-760d-4d75-b3f5-6da27ea140dd])

   BEGIN SEQUENCE WITH __BreakBlock()
      If Empty(cBody) .or. cBody == Nil
         oSoap:Send()
      Else
         oSoap:Send(cBody)
      Endif
   RECOVER
       MsgExclamation([Erro na Conexão com o Serviço.], [Erro])
       Return (Nil)
   END SEQUENCE

   oSoap:WaitForResponse(2000)
   cRetorno := oSoap:ResponseBody()
MSGINFO(CRETORNO)

   cRetorno:= oSoap:Responsetext()
MSGINFO(CRETORNO)
   Release oSoap
Return (cRetorno)


Deu certo ?
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Api Ifood

Mensagem por malcarli »

com a rotina do colega, funcionou perfeitamente
Responder