Página 3 de 3

Gateway de Pagamentos

Enviado: 23 Mai 2021 14:23
por JoséQuintas
E se usar este padrão:

Código: Selecionar todos

 oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
Não é usado o json no envio, e o :send() acaba sendo vazio.

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
Esse está ok, trás o token.
O problema agora está nas requisições usando o token.

Gateway de Pagamentos

Enviado: 23 Mai 2021 14:43
por JoséQuintas
Agora que "enxerguei".

Se usa fivewin, e fivewin é pra windows.... tá mais prático você usar MSXML, e dispensar a libcurl.

Gateway de Pagamentos

Enviado: 23 Mai 2021 14:51
por JoséQuintas
Só mais um comentário que faltou eu dizer:

Eu já fiz a comunicação com IFOOD na API anterior, também em json.
Essa API anterior ainda funciona, e vai funcionar até o final do ano.

O que estou tentando colocar em funcionamento é a nova API, antes que a anterior pare de funcionar.
Por enquanto qualquer das duas pode ser usada.

Gateway de Pagamentos

Enviado: 23 Mai 2021 15:38
por ctoas
Agora que "enxerguei".

Se usa fivewin, e fivewin é pra windows.... tá mais prático você usar MSXML, e dispensar a libcurl.
Jose, eu já abandonei a libcurl e nem faço ideia de como usar MSXML.

Estou fazendo via linha de comando, crio um .BAT em tempo de execução e rodo escondido gravando o retorno em um .TXT.

Ficou transparente para o usuário, muito rápido e resolveu meu problema, pois já estou com esse projeto atrasado.

[]'s

Gateway de Pagamentos

Enviado: 01 Jun 2021 14:39
por Adson
ctoas escreveu:
Agora que "enxerguei".

Se usa fivewin, e fivewin é pra windows.... tá mais prático você usar MSXML, e dispensar a libcurl.
Jose, eu já abandonei a libcurl e nem faço ideia de como usar MSXML.

Estou fazendo via linha de comando, crio um .BAT em tempo de execução e rodo escondido gravando o retorno em um .TXT.

Ficou transparente para o usuário, muito rápido e resolveu meu problema, pois já estou com esse projeto atrasado.

[]'s

CTOAS, por favor, posta o .bat pois acho que vou precisar fazer assim tb pq estou levando uma surra pra enviar um formulário multi-data pra um WS.

Gateway de Pagamentos

Enviado: 05 Jun 2021 02:52
por rochinha
Amiguinhos,

Vou deixar umas dicas aqui quem sabe clareia a cabecinha:

Código: Selecionar todos

Function EnviarJSONporWebService()
   local oWS, sDataRaw, sAuthorization
   oWS := TOleAuto():New( "MSXML2.ServerXMLHTTP.6.0" )
   if ValType(oWS) <> "O"
      return nil
   endif
   sDataRaw := '{' + CRLF + ;
	  '"items": [' + CRLF + ;
	  '  {' + CRLF + ;
	  '    "name": "Meu Produto",' + CRLF + ;
	  '    "value": 7500,' + CRLF + ;
	  '    "amount": 1' + CRLF + ;
	  '  }' + CRLF + ;
	  '],' + CRLF + ;
	  '"customer": {' + CRLF + ;
	  '  "name": "Gorbadoc Oldbuck",' + CRLF + ;
	  '  "cpf": "94271564656",' + CRLF + ;
	  '  "phone_number": "5144916523"' + CRLF + ;
	  '},' + CRLF + ;
	  '"expire_at": "2018-12-20",' + CRLF + ;
	  '"configurations": {' + CRLF + ;
	  '      "fine": 200,' + CRLF + ;
	  '      "interest": 33' + CRLF + ;
	  '    },' + CRLF + ;
	  '"message": "Este é um espaço de até 80 caracteres para informar algo a seu cliente",' + CRLF + ;
	  '"repeats": 5,' + CRLF + ;
	  '"split_items": false' + CRLF + ;
	'}'
   // Certificado que vamos usar do armazem de certificados de Windows.
   oWS:SetOption( 3, "Nome do certificado" )
   oWS:Open( "POST", "https://sandbox.gerencianet.com.br/v1/carnet", .f. )
   // Caso seja necessario definir timeouts
   // Os valores sao em milisegundos
   oWS:setTimeouts( 15000, 15000, 600000, 600000 )
   // Metodo chamados
   oWS:SetRequestHeader( "Content-Type", "application/json" )
   oWS:SetRequestHeader( "Authorization", sAuthorization )
   // Enviamos a informacao JSON
   oWS:send( sDataRaw )
   MsgInfo( "Resposta: " + oWS:responsexml:xml)
   return ""    

function EnviarJSONporDOS()
   local sDataRaw, sAuthorization, sParameters
   sDataRaw := '{' + CRLF + ;
               '"items": [' + CRLF + ;
               '  {' + CRLF + ;
               '    "name": "Meu Produto",' + CRLF + ;
               '    "value": 7500,' + CRLF + ;
               '    "amount": 1' + CRLF + ;
               '  }' + CRLF + ;
               '],' + CRLF + ;
               '"customer": {' + CRLF + ;
               '  "name": "Gorbadoc Oldbuck",' + CRLF + ;
               '  "cpf": "94271564656",' + CRLF + ;
               '  "phone_number": "5144916523"' + CRLF + ;
               '},' + CRLF + ;
               '"expire_at": "2018-12-20",' + CRLF + ;
               '"configurations": {' + CRLF + ;
               '      "fine": 200,' + CRLF + ;
               '      "interest": 33' + CRLF + ;
               '    },' + CRLF + ;
               '"message": "Este é um espaço de até 80 caracteres para informar algo a seu cliente",' + CRLF + ;
               '"repeats": 5,' + CRLF + ;
               '"split_items": false' + CRLF + ;
               '}'
   sParameters := [ --location --request POST 'https://sandbox.gerencianet.com.br/v1/carnet' ] + ;
                  [ --header 'Authorization: {{Authorization}}' ] + ;
                  [ --header 'Content-Type: application/json' ] + ;
                  [ --data-raw ] + sDataRaw + ;
                  [ > GNCURL.TXT]
   cMacro      := "GNCURL.BAT"
   cComando    := "CURL.EXE " + sParameters
   errhandle   := fCreate( cMacro )         
   fWrite( errhandle, cComando )
   fClose( errhandle )
   //
   // MsgRun( "Aguarde o termino do processo", "Envio de Email...", {|| WaitRun( cMacro, 0 ) } )
   Run( cMacro, 0 )
   //
   cRetorno    := MemoRead( "GNCURL.TXT" )
   return nil

Gateway de Pagamentos

Enviado: 20 Abr 2022 10:19
por Abel
ola Rochinha,

ao usar SETTIMEOUTS esta dando erro na execucao,

"argument error: settimeouts', tem que incluir algun .ch no prg ou algum comando na compilacao ?

uso harbour 3.2 modo console.

Obrigado,
ABEL

Gateway de Pagamentos

Enviado: 20 Abr 2022 14:53
por rochinha
Amiguinhos,

Pode desabilitar a linha.

Gateway de Pagamentos

Enviado: 20 Abr 2022 15:54
por alxsts
Olá!
rochinha escreveu:Pode desabilitar a linha.
Se está dando erro, desabilite a linha... mais fácil, não é?

Esta linha (SetTimeOuts) deve estar antes de invocar o método Open. Esta é a causa do erro.

Veja: setTimeouts Method

Gateway de Pagamentos

Enviado: 16 Set 2022 11:36
por informais
Olá pessoal Alguem conseguiu fazer funcionar ?

Gateway de Pagamentos

Enviado: 22 Jan 2023 21:42
por rochinha
Amiguinhos,

O exemplo que postei eu apenas montei, não testei pois não tenho cadastro no gerencianet.

Além do mais se ao invés de trabalhar com json quiserem trabalhar com xml use o aplicativo que disponibilizei neste link para converter json para xml.

Gateway de Pagamentos

Enviado: 07 Ago 2023 06:10
por Alfredo
Alguem conseguiu fazer a integração com o IFood na nova API ?? Estou tendo estas dificuldades citadas acima, precisando de uma ajuda.

Gateway de Pagamentos

Enviado: 10 Ago 2023 16:26
por Kapiaba
Boa tarde Alfredo, tens o código para testes?

Algo assim?

https://forums.fivetechsupport.com/view ... ad#p261202

abs.