Histórico de mensagens sobre webhook em pix

EXIBINDO CONVERSAS RECENTES:

Texto: webhook
Data: 17/01/2025
Canal: pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @rogerio_itu2044! Tudo bem?
Gostaria de registrar que, ao deixar o x-skip-mtls-checking como true, o Efí continuará enviando o certificado TLS na requisição, mas seu servidor irá ignorá-lo.

Nesse caso, você não precisa criar uma nova rota, pois a notificação será sempre enviada para /webhook, e o hmac será um query param. O parâmetro ignorar pode realmente ser desconsiderado. Nesse cenrário é importante verificar se o HMAC recebido na notificação em sua aplicação, é o mesmo que foi cadastrado no webhook no Efí. Além disso, recomendamos realizar uma validação por IP, já que nossa API utiliza exclusivamente o IP 34.193.116.226. Essas práticas garantem que é realmente o Efí quem está enviando a notificação. Sem o mTLS configurado, não ocorre o "handshake" de segurança.

Segue um exemplo em Node.js:

js
app.post('/webhook', (req, res) => {
const expectedHmac = "xyz"; // Valor esperado do HMAC que você usar no cadastro do webhook (cadastre um diferente deste)
const authorizedIp = "34.193.116.226"; // IP utilizado pelo API do Efí Bank

const requestIp = req.ip;
const requestHmac = req.query.hmac;

// Validação do IP
if (requestIp !== authorizedIp) {
res.status(401).json({ error: "Solicitação de webhook não autorizado" });
return;
}

// Validação do HMAC
if (!requestHmac || requestHmac !== expectedHmac) {
res.status(401).json({ error: "Solicitação de webhook não autorizado" });
return;
}

// Processar o webhook conforme sua regra de negócio
});

Avatar discord do usuario rogerio_itu2044

rogerio_itu2044

Ver Respostas

Tenho mais 2 duvidas sobre o webhook Skip-mTLS, ao cadastrar https://seu_dominio.com.br/webhook?hmac=xyz&ignorar= ele se tornará dinâmico.

- Eu devo incluir o /api no final da url acima, ficando https://seu_dominio.com.br/webhook?hmac=xyz&ignorar=/api?

- Eu devo criar outro endpoint do tipo POST para https://seu_dominio.com.br/webhook?hmac=xyz&ignorar=/api (caso tenha o /api no final conforme questionado acima ou somente com o endpoint acima eu já conseguirei escutar as notificações?

Por favor me encaminhe exemplos.
Muito obrigado!

Avatar discord do usuario rogerio_itu2044

rogerio_itu2044

Ver Respostas

Boa noite!
Já se foram 3 longos dias tentando configurar meu webhook com Skip-mTLS em NodeJs Typescript, usando o sdk-node-apis-efi, por favor poderiam me ajudar, estou recebendo o seguinte erro:

{
nome: 'webhook_invalido',
mensagem: 'A URL informada respondeu com o código HTTP 403'
}

Sei que existem vários pedidos de ajuda relacionados a esse caso, mas nenhum é relacionado ao webhook do tipo Skip-mTLS, que é meu caso, porque estou usando servidor compartilhado.
A principio quero ressaltar um erro nos exemplos do github:
credentials.js
module.exports = {
// PRODUÇÃO = false
// HOMOLOGAÇÃO = true
sandbox: false,
client_id: 'seu_client_id',
client_secret: 'seu_client_secret',
certificate: 'caminho/ate/seu/certificado.p12',
}
sendo que no SDK mostra diferente:
{
sandbox: boolean;
client_id: string;
client_secret: string;
partner_token?: string | undefined;
certificate?: string | undefined;
cert_base64?: boolean | undefined;
pix_cert?: string | undefined;
pemKey?: string | undefined;
}
E também tem um erro no exemplo no git para configuração do webhook, de onde venho esse tal de options['validateMtls'], sendo que ele não existe nas credenciais do SDK:
const EfiPay = require('sdk-node-apis-efi')
let options = require('../../credentials')

options['validateMtls'] = false

let body = {
webhookUrl: 'https://exemplo-pix/webhook',
}

let params = {
chave: 'SUACHAVEPIX',
}

const efipay = new EfiPay(options)

efipay.pixConfigWebhook(params, body)
.then((resposta) => {
console.log(resposta)
})
.catch((error) => {
console.log(error)
})
O arquivo anexo contém meu exemplo de configuração de webhook, mas gostaria muito que vocês fornecessem um exemplo atualizado em typescript.
Muito obrigado!