Histórico de mensagens sobre webhook pix em pix

EXIBINDO CONVERSAS RECENTES:

Texto: webhook pix
Canal: pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, <@!806859749571821568>.
Tendo criado a cobrança com um txid, quando paga, será enviado o webhook referente a ele. Exemplo:

json
// Pix recebido
{
"pix": [
{
"endToEndId": "E1803615022211340s08793XPJ",
"txid": "fc9a43k6ff384ryP5f41719",
"chave": "2c3c7441-b91e-4982-3c25-6105581e18ae",
"valor": "0.01",
"horario": "2020-12-21T13:40:34.000Z",
"infoPagador": "pagando o pix"
}
]
}

Avatar discord do usuario rubenskuhl

rubenskuhl

Consultando /webhook aparece a URL para a chave Pix em questão ?

Avatar discord do usuario guilherme_efi

guilherme_efi

Bom dia, <@!788406836813365248>
Conforme mencionado pelo Rubens, o BACEN não possui esse tipo de serviço para validação pública.
A melhor forma de validar a confirmação de um Pix é através do recebimento notificaçõe via webhook.

Uma maneira que os sistemas podem oferecer para para o caso dos atendentes, é uma forma de consultar via API o txid do Pix (https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-consultar-cobran-a). Retornando o array "pix" com o "endToEndId", significa que houve o pagamento.

Possível também consultar a situação de um Pix pelo extrato financeiro da conta, ou pelos seguintes endpoints:
https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-consultar-pix
https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-consultar-pix-recebidos
https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-consultar-lista-de-cobran-as

Avatar discord do usuario jonasbp.

jonasbp.

Ver Respostas

Consigo receber Webhook de um Qr-Code Pix estático?

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Boa tarde, <@!666766641358438413>. Como citado pelo Rubens não há um comprovante do BACEN retornado via API, o que você pode fazer é utilizar os dados de cobranças pagas e montar o comprovante. Você consegue estes dados via webhook ou consumindo os endpoints GET /v2/pix ou GET /v2/cob .

Avatar discord do usuario m4cr0st3r

m4cr0st3r

Ver Respostas

Olá, bom dia! Me chamo Luís e estou fazendo integração com Gerencianet, específicamente na parte de requisião de envio de pix. O caso que estou tendo é o seguinte: Estou fazendo envio de pix para uma determinada conta, e está chegando para mim via webhook que foi transferido com sucesso, até aí tudo certo. Porém quando o recebedor decide realizar um estorno, gostaria de saber como essa informação chega para mim. Chega na forma de um pix recebido? Irá bater no mesmo webhook configurado para envio? Agradeço desde já pela excelente documentação, simples e direta.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Outra dica seria você registrar seu URL de webhook com um query params para ignorar o /pix que é inserido no final.
Ou seja, na request PUT https://api-pix.gerencianet.com.br/v2/webhook/:chave você irá passar o body com sua URL, exemplo:

Então enviaremos a notificação para https://seudominio.com.br/webhook?ignorar=/pix
E você trata a notificação em /webhook ignorando o /pix

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Beleza.
Para facilitar essa configuração com o Apache, uma dica seria configurar um subdomínio com o mTLS dedicado para o webhook, ex www.webhook.seu_dominio.com.br. Que com um subdomínio fica fácil fazer o redirecionamento do /pix. Veja um exemplo completo:

apache

:443>
ServerName webhook.seudominio.com.br
ServerAlias www.webhook.seudominio.com.br
ErrorLog ${APACHE_LOG_DIR}/webhook.error.log
CustomLog ${APACHE_LOG_DIR}/webhook.access.log combined
DocumentRoot /var/www/webhook


Options Indexes FollowSymLinks
AllowOverride All
Require all granted


Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/webhook.seudominio.com.br/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/webhook.seudominio.com.br/privkey.pem

# mTLS Gerencianet
SSLCACertificateFile /etc/apache2/sites-available/cert_gn/chain-pix-prod.crt
SSLVerifyClient require
SSLVerifyDepth 3

# Redirect from /pix
Alias "/pix/" "/var/www/webhook/index.php"
Alias "/pix" "/var/www/webhook/index.php"


Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Acrescentando uma observação que é a adição do /pix no final da sua URL. Ou seja, na request PUT https://api-pix.gerencianet.com.br/v2/webhook/:chave você irá passar o body com sua URL, exemplo:

json
{
"webhookUrl": "https://seudominio.com.br/webhook"
}
No entanto, a URL será registrada com o /pix no final, assim:
https://seudominio.com.br/webhook/pix.
Ou seja, esta adição do /pix também dever ser tratada nas configurações de seu servidor para que na rota /webhook/pix você receba as notificações

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Todo mundo aqui no canal que já citou Google Cloud foi com não solução disso. Uma alternativa para considerar:

Pra quem tem dificuldades de implementar os webhooks por falta de suporte em hospedagem compartilhada para configurar mTLS, o Pix.ae agora oferece proxy de callbacks com mTLS.

Pra usar é muito simples: é só prefixar o seu domínio com mtls.pix.ae/. Por exemplo:

Para: https://exemplo.com.br/webhookpix
Use: https://mtls.pix.ae/exemplo.com.br/webhookpix

Obs: no ambiente de homologação, prefixe com mtls-h.pix.ae/

Avatar discord do usuario vitor.gt

vitor.gt

Ver Respostas

Bom dia, tudo bem?
Preciso de uma ajuda com o mTLS do webhook pix.
Estamos usando o Google Cloud App Engine para a nossa solução

A documentação oficial diz "SSL support for your App Engine app goes above and beyond basic SSL by offering globally-distributed SSL endpoints and built-in load balancing to serve your app securely, reliably, and quickly to a worldwide audience." (https://cloud.google.com/appengine/docs/standard/nodejs/securing-custom-domains-with-ssl)
E aqui diz "Google Cloud load balancers don't support client certificate-based authentication (mutual TLS, mTLS)." (https://cloud.google.com/load-balancing/docs/ssl-certificates#ssl-certificate-limits)

Voces já solucionaram algum caso parecido? Têm alguma ideia de alternativa? Alguma sugestão doq fazer?

Desde já, muito obrigado 🙂

Avatar discord do usuario red_killer.

red_killer.

Estou implementando o webhook da api do pix

Avatar discord do usuario felipoantonoff

felipoantonoff

Ver Respostas

Olá, pessoal, a Hospedagem configurou o mTLS para o Webhook do Pix, podem ver se fizeram certo:

ssl_client_certificate /home/site/chain-pix-prod.crt;
ssl_verify_client optional;
ssl_verify_depth 3;
location /webhook {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
#rewrite ^(.)$ /webhook;
rewrite ^/webhook$ https://site.com.br/index.php?route=extension/payment/code_gerencianet_pix/webhook redirect;
}

Tirei a URL do site, basicamente na url extension/payment... fica a função que recebe o Webhook da Gerencianet Pix
Na parte de emissão do Pix criamos o Webhook usando a URL site.com.br/webhook, mas tem retornado erro:
CurlOperation timed out after 8001 milliseconds with 0 bytes received
ou Response {"nome":"webhook_invalido","mensagem":"A URL informada respondeu com o código HTTP 403"}

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, <@!789223277997326366>!
Exatamente! Desta forma, o webhook de cada sistema estará atrelado a uma chave Pix.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

js
const express = require("express");
const fs = require("fs");
const https = require("https");
const bodyParser = require("body-parser");
var logger = require('morgan');

const httpsOptions = {
cert: fs.readFileSync(""), // Certificado SSL fullchain do dominio
key: fs.readFileSync("/"), // Chave privada SSL do domínio
ca: fs.readFileSync(""), // Certificado público da Gerencianet - baixe no link: https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: false, //Mantenha como false para que os demais endpoints da API não rejeitem requisições sem MTLS
};

const app = express();
const httpsServer = https.createServer(httpsOptions, app);
const PORT = 443;

app.use(logger('dev')); // Comente essa linha caso não queira que seja exibido o log do servidor no seu console
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

// Endpoint para configuração do webhook, você precisa cadastrar https://SEUDOMINIO.com/webhook
app.post("/webhook", (request, response) => {
// Verifica se a requisição que chegou nesse endpoint foi autorizada
if (request.socket.authorized) {
response.status(200).end();
} else {
response.status(401).end();
}
});

// Endpoind para recepção do webhook tratando o /pix
app.post("/webhook/pix", (request, response) => {
if (request.socket.authorized){
//Seu código tratando a callback
/ EXEMPLO:
var body = request.body;
filePath = __dirname + "/data.json";
fs.appendFile(filePath, JSON.stringify(body) + "\n", function (err) {
if (err) {
console.log(err);
} else {
response.status(200).end();
}
})
/
response.status(200).end();
}else{
response.status(401).end();
}
});

httpsServer.listen(PORT, () =>
console.log(Express server currently running on port ${PORT})
);

Avatar discord do usuario ftgk

ftgk

Alguém aí tem um código que funcione na Digital Ocean? Eu pago se necessário ( webhook do pix )