Clipper On Line • Ver Tópico - Gateway de Pagamentos

Gateway de Pagamentos

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

 

Gateway de Pagamentos

Mensagempor JoséQuintas » 23 Mai 2021 14:23

E se usar este padrão:

 oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )


Não é usado o json no envio, e o :send() acaba sendo vazio.

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.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 16918
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 948 vezes

Gateway de Pagamentos

Mensagempor JoséQuintas » 23 Mai 2021 14:43

Agora que "enxerguei".

Se usa fivewin, e fivewin é pra windows.... tá mais prático você usar MSXML, e dispensar a libcurl.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 16918
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 948 vezes

Gateway de Pagamentos

Mensagempor JoséQuintas » 23 Mai 2021 14:51

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.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 16918
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 948 vezes

Gateway de Pagamentos

Mensagempor ctoas » 23 Mai 2021 15:38

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
Avatar de usuário

ctoas
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 52
Data de registro: 09 Mai 2005 16:22
Cidade/Estado: São Paulo
Curtiu: 5 vezes
Mens.Curtidas: 1 vez

Gateway de Pagamentos

Mensagempor Adson » 01 Jun 2021 14:39

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.
Avatar de usuário

Adson
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 21
Data de registro: 05 Mar 2019 10:36
Cidade/Estado: GOIANIA/GO
Curtiu: 18 vezes
Mens.Curtidas: 2 vezes

Gateway de Pagamentos

Mensagempor rochinha » 05 Jun 2021 02:52

Amiguinhos,

Vou deixar umas dicas aqui quem sabe clareia a cabecinha:
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
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4339
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 593 vezes
Mens.Curtidas: 200 vezes

Gateway de Pagamentos

Mensagempor rochinha » 05 Jun 2021 02:53

Amiguinhos,

Vou deixar umas dicas aqui quem sabe clareia a cabecinha:
Function EnviarJSONporWebService()
   local oWS, sDataRaw, sAuthorization := "blLKJSDFJhk...lreuIUYUYdisaiaitivvVGDVSAV"
   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, sParameters, sAuthorization := "blLKJSDFJhk...lreuIUYUYdisaiaitivvVGDVSAV"
   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: ] + sAuthorization + [' ] + ;
                  [ --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
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4339
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 593 vezes
Mens.Curtidas: 200 vezes

Anterior



Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 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