Histórico de mensagens sobre webhook pix

EXIBINDO CONVERSAS RECENTES:

Texto: webhook pix
# pix
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)

# pix
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.

# pix
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

# pix
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.

# pix
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

# pix
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?

# pix
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?

# pix
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();
}
});

# pix
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.

# pix
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.

# pix
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).

# pix
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?

# pix
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})
);

# pix
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;

# pix
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 ?

# comercial
Avatar discord do usuario sergiomsa

sergiomsa

@jessica_efi server {

server_name api.compreplanos.com.br;
root /var/www/compreplanos/api/public;

index index.php index.html index.htm;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_read_timeout 300;
}

location ~ /\.ht {
deny all;
}

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

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

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/api.compreplanos.com.br/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/api.compreplanos.com.br/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
ssl_client_certificate /var/www/compreplanos/api/storage/certificados/gerencianet/chain-pix-prod.crt;
ssl_verify_client optional;
ssl_verify_depth 3;


} server {

listen 80;
listen [::]:80;

server_name api.compreplanos.com.br;


} server {

if ($host = api.compreplanos.com.br) {
return 301 https://$host$request_uri;
} # managed by Certbot

server_name api.compreplanos.com.br;
listen 80;
return 404; # managed by Certbot

}

# comercial
Avatar discord do usuario sergiomsa

sergiomsa

@jessica_efi server {

server_name apivenda.unionadm.com.br;
root /var/www/unionadm/apivenda/public;

index index.php index.html index.htm;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_read_timeout 300;
}

location ~ /\.ht {
deny all;
}

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

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

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/apivenda.unionadm.com.br/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/apivenda.unionadm.com.br/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

ssl_client_certificate /var/www/unionadm/apivenda/storage/certificados/gerencianet/chain-pix-prod.crt;
ssl_verify_client optional;
ssl_verify_depth 3;


} server {

listen 80;
listen [::]:80;

server_name apivenda.unionadm.com.br;

}server {

if ($host = apivenda.unionadm.com.br) {
return 301 https://$host$request_uri;
} # managed by Certbot

server_name apivenda.unionadm.com.br;
listen 80;
return 404; # managed by Certbot

}