Histórico de mensagens sobre webhook porta em pix

EXIBINDO CONVERSAS RECENTES:

Texto: webhook porta
Canal: pix
Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

Na requisição de registro do webhook você pode adicionar no header o parâmetro x-skip-mtls-checking: true dessa forma não será feita a validação do mTLS para o webhook informado.
É importante ressaltar a necessidade de confirmar que é a Gerencianet enviando a requisição, prevenindo que qualquer outra requisição contendo uma confirmação de pagamento falsa chegue para seu sistema.

Nessa situação, deve ser validado pelo em seu servidor.
Lembrando também que a Gerencianet continua a fornecer a comunicação com mTLS, ou seja, na comunicação da notificação nada mudou.

Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

Boa tarde @softvix tudo bem? 🙂
Em servidor compartilhado não é possível configurar o mTLS pois as hospedagem não fornece o acesso como root para modificar as configurações.

Na requisição de registro do webhook você pode adicionar no header o parâmetro x-skip-mtls-checking: true dessa forma não será feita a validação do mTLS para o webhook informado.
É importante ressaltar a necessidade de confirmar que é a Gerencianet enviando a requisição, previnindo que qualquer outra requisição contendo uma confirmação de pagamento falsa chegue para seu sistema.

Nessa situação, deve ser validado pelo em seu servidor.
Lembrando também que a Gerencianet continua a fornecer a comunicação com mTLS, ou seja, na comunicação da notificação nada mudou.

Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

@fabianoyoudo a configuração do webhook foi removida dos outros arquivos?
Nesse exemplo que citei, é importante que somente o arquivo personalizado tenha as configurações do webhook senão pode ocorrer conflito

Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

Por onde você está tentando cadastrar o webhook? via postman?
Vale ressaltar que é importante verificar que a requisição é vinda da Gerencianet para que não aceite possíveis requisições fraudulentas.

Avatar discord do usuario rafael.alexandre

rafael.alexandre

Ver Respostas

Boa noite! Eu estou confuso sobre uma questão... Configurei o meu webhook para ser executado na URL: https://meudominio.com.br/webhook/gerencianet, e portanto, pelo que entendi, eu vou receber as notificações PIX sempre no /webhook/gerencianet/pix. Mas então vi essa imagem acima onde mostra que devemos configurar um alias que irá redirecionar o /pix para /webhook/gerencianet, ai ficou confuso, rs...
imagem enviada na mensagem pelo usuario rafael.alexandre

Avatar discord do usuario chaos7666

chaos7666

Ver Respostas

obrigado, o webhook aceita portas diferentes? exemplo xpto.com:8443?

Avatar discord do usuario Julia Efí

Julia Efí

Boa noite <@!337383375289712651>. "webhook inválido" é uma resposta esperada dentro da nossa API, como a url respondeu com um código diferente de 200, quer dizer que algum requisito de cadastro do webhook ela não está cumprindo. Verifique na nossa documentação se você está seguindo os passos corretamente: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-configurar-o-webhook-pix
Sugerimos também que verifique a sessão de validação mTLS que é uma etapa importante do cadastro do webhook: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-entendendo-o-padr-o-mtls

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Do webhook, é importante ver se o PUT veio com resultado positivo de ativação do webhook. E se o resultado for negativo, aí o conteúdo é importante para diagnóstico.

Você só precisa cadastrar o webhook uma vez por chave, mas se fizer mais cadastros, eles vão só sobrepor o anterior. Por causa da idempotência a resposta sempre vai ser a mesma.

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 rubenskuhl

rubenskuhl

# #
# Utilize o primeiro exemplo, caso queira requerir o certificado para autenticação #
# mútua em qualquer rota do domínio indicado no VirtualHost. #
# Funciona bem para sub-domínios Exemplo: www.webhook.seu_dominio.com.br #
#
#


:443> # Porta HTTPS
#
# ...
#

SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio
SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio

# mTLS Gerencianet
SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt #Chave pública da Gerencianet
SSLVerifyClient require
SSLVerifyDepth 3

#
# ...
#




# #
# Utilize o segundo exemplo, caso queira requerir o certificado para autenticação #
# mútua em apenas uma rota do domínio indicado no VirtualHost. #
# Exemplo: www.seu_dominio.com.br/webhook #
# #


:443> # Porta HTTPS
#
# ...
#

SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio
SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio

# mTLS Gerencianet
SSLVerifyClient none

SSLVerifyClient require
SSLVerifyDepth 3


#
# ...
#

Avatar discord do usuario perrot.

perrot.

Pessoal, boa tarde! Desculpe pela insistência. Alguém aqui já conseguiu criar o webhook no Azure? Depois de publicar, o Docker fica dando erro no ping da porta 8080.

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 perrot.

perrot.

Ver Respostas

<@!671763456487325717> Bom dia! Estou criando os certificados para criar o webhook. No Azure, estou usando certificados gratuitos, que não podem ser importados. Vc consegue me orientar como devo proceder para usar esses certificados no webhook?

Avatar discord do usuario cleiton7853

cleiton7853

Bom dia! Está difícil fazer esse webhook funcionar, mas vamos lá... Meu site está hospedado num servidor Linux CentOS 7 rodando Apache 2.4 e estou usando PHP. No diretório onde vou receber as notificações de webhook eu resolvi criar um .htaccess e exigir o certificado CA da seguinte forma: criei no diretório ~/webhooks/notificacoes um .htacess como abaixo:

SSLVerifyClient require
SSLVerifyDepth 3
SSLCACertificateFile /home/certificados/chain-pix-sandbox.crt

Quando tento acessar uma página dentro de ~/webhooks/notificacoes, recebo um erro HTTP 500 e no log do Apache aparece a mensagem:

"/home/meusite/public_html/webhooks/notificacoes/.htaccess: Your SSL library does not have support for per-directory CA"

Esta mensagem quer dizer que meu servidor não vai suportar a autenticação que exige a GerenciaNet?

Agradeço se alguém conseguir me ajudar...

Avatar discord do usuario amaury_martin

amaury_martin

Ver Respostas

Obrigado pela resposta Rubens! O que você falou no caso se aplica a uma mesma transação Pix, correto? Eu queria também saber como esse comportamento se dá no contexto de várias transações diferentes. Estou integrando com a API Pix da Gerencianet utilizando as credenciais da conta PF que abri e estou fazendo testes utilizando o certificado de produção pra fazer testes devido a dificuldade de testar o retorno do webhook utilizando o de homologação. Estava devolvendo todas as transações PIX que havia pago no dia de hoje testando minha aplicação (várias transações de um centavo) e não consegui realizar uma das devoluções por causa desse limite. Recebi um 422 e um json com uma mensagem "Valor limite da devolução atingido". Contei 9 devoluções, portanto 9 centavos (até estranhei não ser um número redondo, 10 por exemplo) e queria confirmar se esse realmente é o limite. Quando a aplicação for para produção, com certeza usaremos as credenciais de uma conta PJ e é possível que, devido a regra de negócio, o volume de devoluções por dia seja maior que 9 (seriam várias transações Pix, onde cada transação teria apenas uma devolução do valor integral pago). Então já fica mais duas perguntas: há diferente entre esses limites de devolução pra conta PJ e PF? É possível negociar esses limites com a Gerencianet no caso da conta PJ?

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Bom dia <@!620895261568401428> ! O webhook é acionado no momento em que você realiza a transação. Então esse comportamento pode ser devido a alguma falha na configuração do seu servidor. Fizemos alguns testes e esta funcionando corretamente, sem atraso.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Por enquanto só em produção.
Edit: mas você pode acionar você mesma o webhook para ver como seu sistema se comporta, só precisa fazer isso numa rota sem mTLS.

Avatar discord do usuario cleversonmenur

cleversonmenur

Ver Respostas

Testando aqui o funcionamento do webhook de produção. Recebendo pagamentos e fazendo devoluções. Depois de alguns vai-e-volta de centavos comecei a perceber um comportamento estranho. As chamadas no webhook chegam com 1 passo de atraso. Como se a chamada ao webhook estivesse utilizando filas e fica sempre a última transação lá na fila e não vem pro meu webhook na hora certa. Ou seja, quando faço uma transação chega a transação anterior (que não havia chegado antes) e a nova não chega. Só chegará quando eu fizer a próxima. E assim por diante. 🤔 Estou esquecendo algo?

Avatar discord do usuario franciscorsobrinho

franciscorsobrinho

Ver Respostas

Embora eu não esteja usando o webhook, vi este exemplo e fiquei com uma dúvida. No exemplo "devolucoes" é um objeto, mas no manual "devolucoes" deveria ser uma array. Portanto, acho que o exemplo da GerenciaNet está errado (ou o manual)

Avatar discord do usuario rafaelvolpato

rafaelvolpato

Ver Respostas

para eu tentar contornar enquanto isso, o webhook pode ser em qq porta? (diferente da 443)?