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 ctoas » 20 Mai 2021 18:10

Olá!

Consegui fazer com linha de comando

curl --location --request POST "https://sandbox.gerencianet.com.br/v1/authorize" --header "Authorization: Basic Q2..." --header "Content-Type: application/json" --data-raw "{  \"grant_type\":\"client_credentials\"}"


Agora é passar para os comando da lib
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 JoséQuintas » 21 Mai 2021 11:47

Tá me lembrando a API do IFood.
Ela não funcionava se não enviasse primeiro o comando de liberação.

A API nova ainda estou testando, mas tem parte parecida.
Uma API só é liberada se primeiro chamar outra.
E o manual mostra vários webservices, inclusive os que não precisa, e isso confunde.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gateway de Pagamentos

Mensagempor ctoas » 21 Mai 2021 15:04

Exatamente isso Jose Quintas, essa linha é somente para liberação e possui diversas outras...
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 ctoas » 21 Mai 2021 15:08

Outra coisa, o WINEXEC() não executa esta linha, acho que é muito grande.....
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 Itamar M. Lins Jr. » 21 Mai 2021 15:54

Olá!
Use um .BAT
START CURL ...

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Gateway de Pagamentos

Mensagempor ctoas » 21 Mai 2021 16:05

Opa Itamar....

Estou criando o .BAT em execução e executando com WAITRUN()

WAITRUN("TESTE.BAT",0)
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 JoséQuintas » 23 Mai 2021 11:20

ctoas escreveu:Exatamente isso Jose Quintas, essa linha é somente para liberação e possui diversas outras...


Ainda apanhando um pouco com IFood.
A comunicação igual a essa NÃO é pra obter liberação, é pra obter o token de liberação.
Depois usa o token nas demais comunicações.

O manual se limita a dizer que é autenticação do tipo Bearer, mas tá difícil de achar os detalhes disso.
À primeira vista é passar no header, mas.... com certeza existe um nome pra isso, não basta acrescentar o token.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gateway de Pagamentos

Mensagempor JoséQuintas » 23 Mai 2021 11:44

Assim retorna Nil, agora não sei se é Nil porque não tem pedidos, ou se tá com erro.

METHOD Post( cProtocolo, cUrl, cEnvio, lWithToken ) CLASS IFoodClass

   LOCAL oServer

   hb_Default( @cProtocolo, "POST" )
   hb_Default( @lWithToken, .F. )
   oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP" )
   oServer:Open( cProtocolo, cUrl, .F. )
   oServer:SetRequestHeader( "Accept", "application/json" )
   IF lWithToken
     oServer:SetRequestHeader( "Content-Type", "application/json" )
     oServer:SetRequestHeader( "Authorization", "Bearer " + ::aRespToken[ "accessToken" ] )
   ELSE
      oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
   ENDIF
   oServer:Send( cEnvio )
   oServer:WaitForResponse( 2000 )
   ::cResposta := oServer:ResponseBody()
   ::aJson     := hb_JsonDecode( ::cResposta )

   RETURN ::aJson
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gateway de Pagamentos

Mensagempor JoséQuintas » 23 Mai 2021 11:47

Por enquanto, a única coisa que sei é que sem o Authentication retorna:

{
"message": "no jwt token"
}
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gateway de Pagamentos

Mensagempor ctoas » 23 Mai 2021 13:00

Bom dia José Quintas,

Você tem razão, me expressei mal quando disse liberação, o que retorna é como você disse o token que usado no resto das requisições.

Com relação ao erro que você colocou, pode ser na formação da string do JSON, pois o retorno deveria ser:

{
  "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJlNjkwYjczZC01OTI4LTRkMTctODE2ZC01Y2Y5YjgyZTJhOWUiLCJhdWQiOiJvcmRlciIsInVzZXJfbmFtZSI6ImU2OTBiNzNkLTU5MjgtNGQxNy04MTZkLTVjZjliODJlMmE5ZSIsInNjb3BlIjpbIm9yZGVyIl0sInRlbmFudElkIjoiNmFjNjkxZDEtMjZjNi00ZmVkLWJmN2ItOTEwMzJkNTM4NWZkIiwiaXNzIjoiaUZvb2QiLCJtZXJjaGFudF9zY29wZSI6WyI2YjQ4N2EyNy1jNGZjLTRmMjYtYjA1ZS0zOTY3YzIzMzE4ODI6b3JkZXIiXSwiZXhwIjoxNjEyMjMwNDU5LCJpYXQiOjE2MTIyMDg4NTksIm1lcmNoYW50X3Njb3BlZCI6dHJ1ZSwiY2xpZW50X2lkIjoiZTY5MGI3M2QtNTkyOC00ZDE3LTgxNmQtNWNmOWI4MmUyYTllIiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9DTElFTlQiXX0.lYqdxjHoOksq8COqJ-VZxzd524MhVzH7hkMfp5zGTpqzp26z5XJwOPHAy7L6oyagUgRfxntKeu0Up_JHgJ-Vr0h5Y9wY4XHcK1yxpFXFB5f5ilGDB0hVN3UGa4GBqeVpCbAPQUl4VhbF2byeL9PuO4TfTZmoWyuec9-xEH_nbHg",
  "type": "bearer",
  "expiresIn": 21600
}


Agora, eu fugiria da API e usaria a linha de comando o CURL.EXE, muito mais simples e prático.

Aqui esta os ENDPOINTS para uso com o CURL.EXE
https://developermercado.ifood.com.br/reference#pedido-1

O pessoal da GerenciaNet me passou um site que converte p JSON para string, segue o link:
https://tools.knowledgewalls.com/jsontostring

[]'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 JoséQuintas » 23 Mai 2021 13:23

O retorno da solicitação do token está ok, é nesse formato mesmo.
Agora estou no próximo processo, que é solicitar novos pedidos.
Justamente aonde vai usar o token recebido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gateway de Pagamentos

Mensagempor ctoas » 23 Mai 2021 13:33

Processo: Retorna os eventos

A chamada /api/v1/pedido/eventos trás todos os eventos dos pedidos da rede de lojas com seus status, por exemplo, se uma rede de lojas possui mais que uma loja cadastrada no nosso sistema essa chamada trará todos os eventos.

Se for esse processo, pelo ENDPOINT ficaria assim:
curl --request GET --url "https://service.sitemercado.com.br/api/v1/pedido/eventos" --header "Accept: application/json" --header "access_token: seu_token"


Retorno
[
  {
    "id": 0,
    "codigoPedido": "string",
    "status": "CAN",
    "idLoja": 0
  }
]


Testa ai...
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 JoséQuintas » 23 Mai 2021 14:09

Se eu passar diferente daquilo, o retorno é:

{"message": "no jwt token"}
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gateway de Pagamentos

Mensagempor JoséQuintas » 23 Mai 2021 14:10

O que eu já percebi é que:
O que no curl indica -H ou --header, no msxml é :SetRequestHeader( "nome", conteudo )

Isto no curl:
curl --request GET --url "https://service.sitemercado.com.br/api/v1/pedido/eventos" --header "Accept: application/json" --header "access_token: seu_token"


seria:

:Open( "GET", "https://service.sitemercado.com.br/api/v1/pedido/eventos", .T. )
:SetRequestHeader( "Accept", "application/json" )
:SetRequestHeader( "access_token", seu_token )
:Send( xValue )
cRetorno := :ResponseBody()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gateway de Pagamentos

Mensagempor JoséQuintas » 23 Mai 2021 14:18

exemplo.png


Um exemplo que encontrei na net com o padrão "bearer"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Anterior Próximo



Retornar para FiveWin

Quem está online

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