PIX + WEBHOOK
Moderador: Moderadores
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
PIX + WEBHOOK
Ola pessoal a minha class de PIX esta funcionando certinho , enviando o PIX ao banco GERENCIANET e pegando o retorno do QRCODE ou da LINHA do QRCODE, após pagamento eu tenho de pegar o retorno atravez de um WEBHOOK que monitora os avisos de recebimento de PIX.
Pesquisando sobre como fazer o tal WEBHOOK me deparei com muita coisa, mas nao consegui entender como aplicar , gostaria da ajuda dos amigos do forum que tenham mais experiência com isso.
https://github.com/FiveTechSoft/wsserver
estive olhando este exemplo de algo parecido , mas mesmo assim nao consegui definir como aplicar em um WEBHOOK
conto com a ajuda, pois servirá para todos que querem implementar retorno de PIX, pois isso é um padrao para todos os bancos e ate o BC(banco central) usa para comunicar ao banco recedbedor sobre um pix .
Obs: olha la a tarifa de 1.19% da GERENCIANET em cima da transação
Pesquisando sobre como fazer o tal WEBHOOK me deparei com muita coisa, mas nao consegui entender como aplicar , gostaria da ajuda dos amigos do forum que tenham mais experiência com isso.
https://github.com/FiveTechSoft/wsserver
estive olhando este exemplo de algo parecido , mas mesmo assim nao consegui definir como aplicar em um WEBHOOK
conto com a ajuda, pois servirá para todos que querem implementar retorno de PIX, pois isso é um padrao para todos os bancos e ate o BC(banco central) usa para comunicar ao banco recedbedor sobre um pix .
Obs: olha la a tarifa de 1.19% da GERENCIANET em cima da transação
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
PIX + WEBHOOK
Dei uma olhada rápida no que é webhook, e me pareceu que uma coisa não tem nada a ver com a outra.
Me parece que é o que você já faz, mas de outro jeito.
Me parece que é o que você já faz, mas de outro jeito.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
PIX + WEBHOOK
WebHook pode-se dizer que é um website onde recebe respostas de alguma API a grosso modo.
Por exemplo, tenho um site e nele banco de dados onde lanço minhas transações que faço a uma determinada API. GERALMENTE, quando faz a chamada a uma API no envio da transação deve enviar um ID seu único que identifique a transação ou a API lhe retornará um ID único da transação efetuada por ela. O ID único voce guarda no seu banco de dados no registro referente a transação executada.
A API ao efetivar a transação pode enviar a resposta a seu WebHook que nada mais é que uma URL onde será passado os dados da transação. Geralmente, é um arquivo .php ou .asp que vai receber este POST vindo da API e deve estar preparado para processar, como por exemplo QUITAR o registro original da operação constante no seu banco de dados. Ou seja, para que tudo isso funcione tem que estar 24h disponível na internet.
No seu sistema, voce consulta seu banco de dados e verifica a situação da transação se foi quitada, rejeitada, cancelada etc fazendo uma chamada direta ao seu BANCO ou HTTPS a um script php, asp ou outra linguagem de servidor.
Por exemplo, tenho um site e nele banco de dados onde lanço minhas transações que faço a uma determinada API. GERALMENTE, quando faz a chamada a uma API no envio da transação deve enviar um ID seu único que identifique a transação ou a API lhe retornará um ID único da transação efetuada por ela. O ID único voce guarda no seu banco de dados no registro referente a transação executada.
A API ao efetivar a transação pode enviar a resposta a seu WebHook que nada mais é que uma URL onde será passado os dados da transação. Geralmente, é um arquivo .php ou .asp que vai receber este POST vindo da API e deve estar preparado para processar, como por exemplo QUITAR o registro original da operação constante no seu banco de dados. Ou seja, para que tudo isso funcione tem que estar 24h disponível na internet.
No seu sistema, voce consulta seu banco de dados e verifica a situação da transação se foi quitada, rejeitada, cancelada etc fazendo uma chamada direta ao seu BANCO ou HTTPS a um script php, asp ou outra linguagem de servidor.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
PIX + WEBHOOK
Sim parece com o que ja faço , so nao sei como ficar escutando o que o banco me manda, pois nao posso ficar consultando ate chegar uma resposta, se fizer assim ele me derrubamJoséQuintas escreveu:Dei uma olhada rápida no que é webhook, e me pareceu que uma coisa não tem nada a ver com a outra.
Me parece que é o que você já faz, mas de outro jeito.
um exemplo em PYTHON do que eles querem
Código: Selecionar todos
from flask import Flask, jsonify, request
import ssl
import json
app = Flask(__name__)
@app.route("/", methods=["POST"])
def imprimir():
response = {"status": 200}
return jsonify(response)
@app.route("/pix", methods=["POST"])
def imprimirPix():
imprime = print(request.json)
data = request.json
with open('data.txt', 'a') as outfile:
outfile.write("\n")
json.dump(data, outfile)
return jsonify(imprime)
if __name__ == "__main__":
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.verify_mode = ssl.CERT_REQUIRED
context.load_verify_locations('caminho-certificados/certificado-público-Gerencianet.crt')
context.load_cert_chain(
'caminho-certificados/server_ssl.crt.pem',
'caminho-certificados/server_ssl.key.pem')
app.run(ssl_context=context, host='0.0.0.0')
#Desenvolvido pela Consultoria Técnica da EfíHARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
PIX + WEBHOOK
Então, é muito pior do que pensei.
Não é você que vai consultar respostas, é a API deles que vai te avisar quando tem mudança.
Pra isso, provavelmente vai depender de IP, porta, liberação disso, segurança contra invasão, etc.
Se serve webservice, poderia criar um, já pra todos os clientes, e deixar na internet.
Então, voltou a depender de você:
Dê uma olhada nos manuais deles, sobre como você informa o endereço de comunicação, e o que pode preencher nesse endereço.
É a partir daí que vai poder pensar nas opções.
Se for endereço de internet com parâmetros, poderia ser um webservice.
Não é você que vai consultar respostas, é a API deles que vai te avisar quando tem mudança.
Pra isso, provavelmente vai depender de IP, porta, liberação disso, segurança contra invasão, etc.
Se serve webservice, poderia criar um, já pra todos os clientes, e deixar na internet.
Então, voltou a depender de você:
Dê uma olhada nos manuais deles, sobre como você informa o endereço de comunicação, e o que pode preencher nesse endereço.
É a partir daí que vai poder pensar nas opções.
Se for endereço de internet com parâmetros, poderia ser um webservice.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
PIX + WEBHOOK
Você vai precisar de uma vps, quando rodar ele vai subir um server que chamamos de webhook, que vai ser o https://ip:porta/pix ou https://your_domain/pix esse link vai ser setado lá nas configurações da Gerencianet e assim que receber uma confirmação de pagamento ou algum outro evento específico eles vão acionar esse link e a informação vai estar disponível lá nesse server, se sua aplicação for desktop você vai precisar ficar dando get dela para esse seu server em algum endpoint que essa informação esteja salva, aí o ideal é criar uma base de dados com a informação que eles vão passar pelo webhook que pode ser com sqlite3, só pra poder consultar depois pelo identificador da transação, se estiver na base é porque foi pago, algo nesse sentido... Aí você pode fazer quantas requisições quiser, pois vai ser para um server seu... o problema aí é fazer isso funcionar em https com os certtificados que eles fornecem, mas seguindo a documentação é tranquilo.Fernando queiroz escreveu:Sim parece com o que ja faço , so nao sei como ficar escutando o que o banco me manda, pois nao posso ficar consultando ate chegar uma resposta, se fizer assim ele me derrubamJoséQuintas escreveu:Dei uma olhada rápida no que é webhook, e me pareceu que uma coisa não tem nada a ver com a outra.
Me parece que é o que você já faz, mas de outro jeito.
um exemplo em PYTHON do que eles queremCódigo: Selecionar todos
from flask import Flask, jsonify, request import ssl import json app = Flask(__name__) @app.route("/", methods=["POST"]) def imprimir(): response = {"status": 200} return jsonify(response) @app.route("/pix", methods=["POST"]) def imprimirPix(): imprime = print(request.json) data = request.json with open('data.txt', 'a') as outfile: outfile.write("\n") json.dump(data, outfile) return jsonify(imprime) if __name__ == "__main__": context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context.verify_mode = ssl.CERT_REQUIRED context.load_verify_locations('caminho-certificados/certificado-público-Gerencianet.crt') context.load_cert_chain( 'caminho-certificados/server_ssl.crt.pem', 'caminho-certificados/server_ssl.key.pem') app.run(ssl_context=context, host='0.0.0.0') #Desenvolvido pela Consultoria Técnica da Efí
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
PIX + WEBHOOK
No meu caso, que só mexo com ASP, pode complicar a conexão.
Ao mesmo tempo que seria igual meu webservice de CEP, o tipo da conexão acho que nem é possível com ASP.
Acaba sendo mesmo criar um webservice.
Se esse webservice atualiza diretamente a base de dados ou não, depende da base de dados.
Caso não atualize, o mesmo webservice pode atender o aplicativo.
É uma coisa relativamente simples, mas no meu caso esbarra na conexão, que não vai servir o que uso.
Provavelmente vou precisar disso também, para o Itaú.
Ao mesmo tempo que seria igual meu webservice de CEP, o tipo da conexão acho que nem é possível com ASP.
Acaba sendo mesmo criar um webservice.
Se esse webservice atualiza diretamente a base de dados ou não, depende da base de dados.
Caso não atualize, o mesmo webservice pode atender o aplicativo.
É uma coisa relativamente simples, mas no meu caso esbarra na conexão, que não vai servir o que uso.
Provavelmente vou precisar disso também, para o Itaú.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
PIX + WEBHOOK
Quintas, andei olhando no Discord da gerencianet e vi que para receber a notificação de pagamento de boleto tambem vai ter de ter o tal :e2eid que so é enviado por WEBHOOK e sem ele voce nao consegue consultar via GET
Como o Rubens disse, o endToEndId é gerado no momento do pagamento da cobrança Pix.
Para conferir um pagamento o meio convencional é o webhook, onde você vai ser notificado no momento do pagamento da cobrança ao invés de ter que realizar consultas periódicas para verificar a situação da cobrança, essa pratica de verificação periódica é denominada polling que não recomendados.
Segue uma imagem que demosntra a comparação do polling com o webhook.
Como o Rubens disse, o endToEndId é gerado no momento do pagamento da cobrança Pix.
Para conferir um pagamento o meio convencional é o webhook, onde você vai ser notificado no momento do pagamento da cobrança ao invés de ter que realizar consultas periódicas para verificar a situação da cobrança, essa pratica de verificação periódica é denominada polling que não recomendados.
Segue uma imagem que demosntra a comparação do polling com o webhook.
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
PIX + WEBHOOK
Voltando nisso do webhook.
No Itaú menciona isso como sendo opcional.
Acho que vai da finalidade de uso.
Se for pra boleto, não precisa receber resposta instantânea.
No Itaú menciona isso como sendo opcional.
Acho que vai da finalidade de uso.
Se for pra boleto, não precisa receber resposta instantânea.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
PIX + WEBHOOK
Ola fernando,
Vi que o post é antigo mas como atualizou.
Eu fiz a programa de pix para paybroker, transfero, trio.
Todos trabalham com o webhook, que nada mais é, do que uma requisição feita a um site/script de sua autoria, para capturar o status da transação.
Então, a forma mais fácil é vc colocar no site um script que seja em php, que atualize o status da transação no seu sistema.
Você pode, claro, fazer também um servidor em harbour, que simule isso.
No meu caso, eu tenho uma biblioteca CGI que fiz em 2004 e uso ate hoje, usei ela para fazer o script no proprio harbour, dá pra usar a biblioteca CIG padrão do harbour isso, vc pode resolver isso de diversas maneiras, mas a mais fácil é um script em php.
Um pergunta, a taxa dessas apis de pix, são 0,04 centavos mesmo?
Vi que o post é antigo mas como atualizou.
Eu fiz a programa de pix para paybroker, transfero, trio.
Todos trabalham com o webhook, que nada mais é, do que uma requisição feita a um site/script de sua autoria, para capturar o status da transação.
Então, a forma mais fácil é vc colocar no site um script que seja em php, que atualize o status da transação no seu sistema.
Você pode, claro, fazer também um servidor em harbour, que simule isso.
No meu caso, eu tenho uma biblioteca CGI que fiz em 2004 e uso ate hoje, usei ela para fazer o script no proprio harbour, dá pra usar a biblioteca CIG padrão do harbour isso, vc pode resolver isso de diversas maneiras, mas a mais fácil é um script em php.
Um pergunta, a taxa dessas apis de pix, são 0,04 centavos mesmo?
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
PIX + WEBHOOK
no caso da gerencianet ele cobram 1.19% sobre o valor da transação, achei muito salgadovagucs escreveu: Um pergunta, a taxa dessas apis de pix, são 0,04 centavos mesmo?
fiz o teste com uma conta que criei com ele e foi isso mesmo que foi cobrado
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
PIX + WEBHOOK
Nossa,
Caríssimo.
Aqui transfero cobra 1% em cima do valor
Trio é a mais em conta, 0.50 centavos fixo, o que inviabiliza valores menores.
Paybroker também é fixo e negociável.
Caríssimo.
Aqui transfero cobra 1% em cima do valor
Trio é a mais em conta, 0.50 centavos fixo, o que inviabiliza valores menores.
Paybroker também é fixo e negociável.

