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

Para definir qual URL será o seu endereço de retorno, você deverá consumir o endpoint PUT /v2/webhook/:chave_pix passando no body da requisição o parâmetro webhookUrl com sua URL.

Complementando, é importante que em seu domínio que representa o seu servidor, esteja configurado a chave pública da Gerencianet para que ocorra a autenticação mútua (mTLS).
Você encontra mais detalhes em: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-webhooks

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, <@!851565059616669729>. Boa tarde! 😀
A opção recomendada para você obter informação de que o Pix foi efetivado, é através de um webhook registrado com sua URL de notificação, para onde enviaremos as callbacks automaticamente quando for pago, por exemplo.

Outra opção é exatamente por esta função que está executando $api->pixDetailCharge($params). Se caso você não encontrou o e2eId, provavelmente o Pix não foi pago.
Pois, ao realizar esta consulta de um Pix que foi pago, no retorno conterá o array "pix" com os detalhes do pagamento e devolução, caso houver. Veja mais detalhes em nossa documentação no exemplo 2: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-consultar-cobran-a

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Ah sim, o webhook do Pix segue o padrão do BACEN, não dos demais serviços da GN.

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 fullchain do SSL do dominio
key: fs.readFileSync("/"), // Chave privada do SSL do domínio
ca: fs.readFileSync(""), // Certificado público da Gerencianet. Baixe aqui: 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 anoni_mato

anoni_mato

Então eles querem se certificar desde já que você tem controle sobre a validação nos requests que chegam sem o /pix, também, já que isso sinaliza que você poderia receber requests em outros endpois baseados na webhookUrl ( webhookhUrl/pix, webhookUrl/novo-recurso, etc).

Avatar discord do usuario inbox5372

inbox5372

log => 2021-06-18T13:17:33.129720+00:00 app[web.1]: rota webhook sem o /pix Request

Avatar discord do usuario inbox5372

inbox5372

async webhook ({ request, response }) {
console.log('rota webhook sem o /pix', request)
response.status(403).end()
}

async webhookPix ({ request, response }) {
console.log('rota webhook com o /pix', request)
response.status(200).end()
}

Avatar discord do usuario inbox5372

inbox5372

<@!440035527127990273> Ao tentar cadastrar o webhookUrl pelo Postman, eu recebo um request sem o append /pix e o erro HPE_INVALID_CONSTANT é exibido na mensagem

Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

resumidamente, o proxy mtls.pix.ae "derruba" a necessidade de você se preocupar com mtls. se quiser uma garantia de o request entrante é da GN, você tem alternativas:

1- enviar um request de consumo na API Pix da GN pra constatar a informação recebida;

2- anotar o IP usado pelo pix.ae nos requests que recebe e depois validar se estão vindo sempre desse mesmo IP;

3- usar uma rota com uma string aleatória menos previsível do que "/webhookpix" (e não torná-la pública).

Avatar discord do usuario inbox5372

inbox5372

Então eu não preciso da rota webhookpix POST, na verdade eu preciso apenas de uma rota webhookpix/pix POST. Correto?

Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

essa etapa 3 eu acho que não está bem descrita. o mtls.pix.ae não faz redirecionamento. ele vai repassar o request vindo da GN para https://cardapio-api.herokuapp.com/webhookpix/pix (lembre-se que a GN adiciona /pix no callback, conforme documentação do BACEN).

Avatar discord do usuario inbox5372

inbox5372

Ver Respostas

Bom dia. Tudo bem com vocês?
Estou buscando uma solução alternativa para o mTLS de um backend hospedado no Heroku.
Uso o AdonisJS.
Um prefixo na webhookUrl => https://mtls.pix.ae/cardapioo-api.herokuapp.com/webhookpix
Mas não sei qual o fluxo nesse cenário. Eu imaginava que fosse assim:
1- O GN envia o primeiro request para a webhookUrl cadastrado pelo Postman, retorna com 403;
2- Faz um novo request em https://mtls.pix.ae/cardapioo-api.herokuapp.com/webhookpix junto com o certificado;
3- Ao bater no webhookUrl com o prefixo mtps.pix.ae é direcionado para a url respondida pelo meu backend;
4- Lá encontra a rota https://cardapioo-api.herokuapp.com/webhookpix POST já pronta;
5- Eu apresento ao GN a minha parte do certificado e pronto.

Mas o que acontece na verdade é => "nome": "webhook_invalido", "mensagem": "A requisição na URL informada falhou com o erro: HPE_INVALID_CONSTANT"

Alguém pode me ajudar por favor?

Avatar discord do usuario luizcristino

luizcristino

Ver Respostas

Bom dia, estou tendo problemas com a chamada do webhook do pix ele sempre me retorna A chave informada não faz referência à conta Gerencianet autenticada

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

A configuração de webhookUrl se faz apenas uma vez por chave Pix, não a cada transação...

Avatar discord do usuario b1n._

b1n._

Ver Respostas

eu entendi que independente da webhook que eu cadastrar, eles vão mandar em webhook/pix.. é isso que está lá, isto não teria problema pra mim

Avatar discord do usuario .rcandido

.rcandido

Ver Respostas

Pessoal estou precisando de ajuda na configuração do webhookUrl. estou passando a url para pixConfigWebhook, mas não estou recebendo o retorno do pagamento. O pagamento é realizado corretamente só o retorno que não está funcionando.

Avatar discord do usuario b1n._

b1n._

Isso, adicionando ?algumacoisa= no final do webhook ignora o /pix e chega no arquivo mesmo

Avatar discord do usuario beto.hostoo

beto.hostoo

a notif tah vindo em webhook//pix