Histórico de mensagens sobre webhook pix em pix

EXIBINDO CONVERSAS RECENTES:

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

palloma_efi

Ver Respostas

Boa noite <@!424210215014105088> ! Tudo bem? O certificado e a chave privada do domínio foram referenciados corretamente? Outra questão é que o certificado público (CA) da Gerencianet é o baixado neste link (https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt).

Avatar discord do usuario rodrigojoaobertotti

rodrigojoaobertotti

Ver Respostas

Olá, boa tarde!
Quando tento configurar os webhooks, estou tendo o erro UNABLE_TO_GET_ISSUER_CERT no campo request.socket.authorizationError
tanto na primeira, quanto na segunda solicitação que o gerência net faz (a primeira é normal dar erro, certo?)

this.server = https.createServer(
{
cert: fs.readFileSync('./credentials/server.crt'),
key: fs.readFileSync('./credentials/server.key'),
ca: [
fs.readFileSync('./credentials/gerenciaNet/pix-ca-crt.pem')
],
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: false,
},
this.app
);

Avatar discord do usuario baxnie

baxnie

Ver Respostas

Boa tarde, a respeito do ticket criado por vocês sobre atualização do certificado.
Devo apenas atualizar o arquivo https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt em meu servidor?
Já posso fazer isso agora? Ou apenas 01/11?

Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

Bom dia <@!327200217877446667> tudo bem? 🙂
Via webhook não é possível. Atualmente só são disparadas as callbacks para o webhook nos casos de:

- Pix Recebido
- Pix Devolvido (No caso pela sua própria aplicação)
- Pix Enviado (Transferência direta)

Avatar discord do usuario rickybgs

rickybgs

Ver Respostas

Bom dia, é possível saber pela API/webhook se um Pix enviado pela API foi estornado? Temos tido alguns casos em que logo após enviar um Pix pela API o mesmo é estornado automaticamente (o estorno não é feito pela pessoa que recebeu, deve ser um estorno automático). Isso tem acontecido algumas vezes por semana.

Avatar discord do usuario leonardo_apereira

leonardo_apereira

Ver Respostas

Beleza! Tudo bem? <@!795645731385901076>

Obrigado pela ajuda, segue:

const express = require("express");
const app = express();
const { WebhookClient } = require("dialogflow-fulfillment");
const bodyParser = require("body-parser");
const mysql = require ('mysql');
var logger = require('morgan');

////////////////// HTTPS
const fs = require("fs");
const https = require("https");
const options = {
key: fs.readFileSync("key.pem"),
cert: fs.readFileSync("cert.crt"),
ca: fs.readFileSync("chain-pix-prod.crt"),
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: false
};
///////////////// HTTPS (FIM)

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static("public"));


////////////////// GERENCIANET (PIX)
app.post("/gerencianet", (request, response) => {
console.log('Entrou gerencia-net');
response.status(200).end();
// 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("/gerencianet/pix", (request, response) => {
response.status(200).end();
console.log('Entrou gerencia-net');
if (request.socket.authorized){
var body = request.body;
console.log(body);
response.status(200).end();
}else{
response.status(401).end();
}
});
//////////////////GERENCIANET - FIM(PIX)

//////////////////////////// HTTPS
https.createServer(options, app).listen(8000);
console.log('Servido NODE (HTTPS) na Porta: 8000!');
/////////////////////////// HTTPS

Avatar discord do usuario joaoc7439

joaoc7439

Ver Respostas

Boa noite, pessoal. Sobre o retorno pelo webhook do pix enviado (POST /v2/pix), ele ocorre apenas uma vez? Pergunto porque parece haver uma sequência natural das situações: EM_PROCESSAMENTO >> REALIZADO/NÃO_REALIZADO.

Avatar discord do usuario rubenskuhl

rubenskuhl

// 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})
);
#Desenvolvido pela Consultoria Técnica da Gerencianet

Avatar discord do usuario rodrigojoaobertotti

rodrigojoaobertotti

Ver Respostas

bom dia!
a respeito de configurar o certificado CA, é recomendado ter uma API exclusiva para receber os webhooks PIX do Gerência Net? ou tudo bem utilizar uma API de um App existente para receber os webhooks?

Avatar discord do usuario rodrigojoaobertotti

rodrigojoaobertotti

estou tendo o erro "A autenticação de TLS mútuo não está configurada na URL informada" para receber webhooks, quando eu uso informo o arquivo .p12, eu devo também configurar chain-pix-sandbox.crt? Ou só com o arquivo .p12 já deveria funcionar?

Avatar discord do usuario matheus_efi

matheus_efi

Bom dia, <@!330406276972412928>. Verifica por favor se você está tratando o /pix que é acrescido ao enviarmos a notificação via POST ​/pix.
Exemplo: Você configurou o webhook https://gerencianet.com/webhook, a notificação vai para https://gerencianet.com/webhook/pix
Um exemplo de uma aplicação em node fazendo esta tratativa:

js
// 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();
}
});

Avatar discord do usuario almirnetocnx

almirnetocnx

Ver Respostas

Boa tarde pessoal, tive um probleminha recente referente a configuração do Pix

Esse foi o body enviado para a rota /v2/gn/config

json
{
"pix": {
"receberSemChave": true,
"chaves": {
"[CHAVE_AQUI]": {
"recebimento": {
"txidObrigatorio": false,
"qrCodeEstatico": {
"recusarTodos": false
},
"webhook": {
"notificacao": {
"tarifa": true
}
}
}
}
}
}
}

Realizando o request acima, recebo o seguinte erro:

json
{
"nome": "json_invalido",
"mensagem": "Valores ou tipos de campo inválidos",
"erros": [
{
"chave": "required",
"caminho": ".body.pix.chaves[CHAVE_AQUI].recebimento.webhook.notificacao",
"mensagem": "deve ter a propriedade obrigatória pagador"
}
]
}

Alguém saberia me informar o motivo do erro? Procurei na documentação e não encontrei, desde já agradeço.

Avatar discord do usuario marcos2050mg

marcos2050mg

No meu glassfish-web.xml eu usando assim: CN=gn-pix-webhooks, OU=Infraestrutura, O=Gerencianet SA, L=Ouro Preto, ST=Minas Gerais, C=BR, porém existem 3 opções dentro do certificado chain-pix-prod.crt então está me deixando confuso qual devo informar.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Duas alternativas:
1) Não usar webhook. Você pode fazer polling das transações pelas quais você está esperando pagamento. Como 96% das cobranças Pix são pagas em 1 minuto, sobram poucas para checar mais tarde.
2) Usar um serviço que faça o mTLS e repasse para você as conexões que validarem. Pode ser o API Gateway da AWS(pago), pode ser o pix.ae(gratuito).

Avatar discord do usuario amiaram

amiaram

Ver Respostas

Salve pessoal, como vocês vão? Eu estou querendo criar o webhook do pix, e esbarrei no padrão mTLS. Estou criando uma aplicação no/low code e não tenho a intenção de ter domínio próprio por enquanto. Como eu poderia fazer isso sem um servidor dedicado?

Avatar discord do usuario marcelomarkus

marcelomarkus

Ver Respostas

const express = require("express");
const fs = require("fs");
const https = require("https");
const url = require('url');
const bodyParser = require("body-parser");
let FormData = require('form-data');
const axios = require("axios");
var logger = require('morgan');
const httpsOptions = {
cert: fs.readFileSync("fullchain.pem"), // Certificado fullchain do dominio
key: fs.readFileSync("privkey.pem"), // Chave privada
ca: fs.readFileSync("chain-pix-prod.crt"), // Certificado Gerencianet
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;
const PORT = 3000;
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
}));
app.post("/webhook", (request, response) => {
if (request.socket.authorized) {
response.status(200).end();
})
.catch(function (error) {
//console.log
});
} else {
response.status(401).end();
//console.log("não autorizado!");
}
});
// Endpoind para recepção do webhook tratando o /pix
app.post("/webhook/pix", (request, response) => {
if (request.socket.authorized) {
response.status(200).end();
} else {
response.status(401).end();
}
});
httpsServer.listen(PORT, () =>
console.log(listen running on port ${PORT})
);

Avatar discord do usuario rubenskuhl

rubenskuhl

Algo assim:

location /webhook {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
if ($ssl_client_s_dn != 'gn-webhook-pix') {
return 403;
}
rewrite ^(.)$ /webhook;

Avatar discord do usuario rubenskuhl

rubenskuhl

Pessoal, alguém já usou $ssl_client_s_dn no nginx para confirmar que o acionamento do Webhook está vindo do gn-webhook-pix ? Como ficou a sintaxe ?

Avatar discord do usuario jessica_efi

jessica_efi

Boa tarde <@!147092745658433536> ! Eu observei que você esta utilizando a rota de homologação. Cadastra o webhook em produção, por favor, utilizando a rota https://api-pix.gerencianet.com.br