Histórico de mensagens sobre webhook em devs

EXIBINDO CONVERSAS RECENTES:

Texto: webhook
Canal: devs
Avatar discord do usuario bluepearl012

bluepearl012

Minha configuração.

const httpsOptions: ServerOptions = {
cert: fs.readFileSync(path.join(process.cwd(), 'efi', env.CERT_EFI_WEBHOOK)), // Certificado fullchain do dominio
key: fs.readFileSync(path.join(process.cwd(), 'efi', env.KEY_EFI_WEBHOOK)), // Chave privada do domínio
ca: fs.readFileSync(path.join(process.cwd(), 'efi', env.CERT_CA_EFI_WEBHOOK)), // Certificado público da Efí
minVersion: 'TLSv1.2',
requestCert: true,
rejectUnauthorized: true, //Caso precise que os demais endpoints não rejeitem requisições sem mTLS, você pode alterar para false
};

Avatar discord do usuario gabriel_efi

gabriel_efi

Ver Respostas

Olá, @thefaccin! Ao gerar uma cobrança em homologação seguindo as instruções descritas na documentação é possível simular o processo de notificação via webhook, lembrando que uma notificação só será enviada se houver webhook cadastrado no ambiente em uso.
imagem enviada na mensagem pelo usuario gabriel_efi

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Boa tarde, @renatosantarrosa_59613! Tudo bem?

O webhook é um recurso que exige conhecimento em programação e infraestrutura, pois será necessário disponibilizar um servidor em nuvem para receber nossas requisições. Além disso, é importante integrar todas as notificações no fluxo atual do seu sistema para garantir o funcionamento adequado.

Se precisar de alguma orientação, estamos à disposição para ajudar!

Avatar discord do usuario renatosantarrosa_59613

renatosantarrosa_59613

Ver Respostas

Boa Tarde
Preciso de uma ajuda para fazer a integração da API Pix com Webhook (make).
Não sou desenvolvedor, existe alguma forma simples para conseguir sozinho ou somente com desenvolvedor ?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia! Tudo bem?

Você pode receber o nome do pagador no webhook. Para isso, primeiro é preciso habilitar essa configuração.

Basta usar o endpoint https://dev.efipay.com.br/docs/api-pix/endpoints-exclusivos-efi#criarmodificar-configurações-da-conta">PUT /v2/gn/config (Criar/modificar configurações da conta), enviando o JSON com a configuração associada à chave Pix que será usada nas cobranças Pix. Para incluir os dados do pagador, como o nome, adicione o parâmetro webhook.notificacao.pagador = true.

Assim, nossa API envia uma notificação parecida com esta:
imagem enviada na mensagem pelo usuario guilherme_efi

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @413749917396238336! Tudo bem?

Para receber essa informação pelo webhook, primeiro é preciso habilitar essa configuração. Para isso, use o endpoint PUT /v2/gn/config (Criar/modificar configurações da conta), enviando o JSON com a configuração associada à chave Pix que será usada nas cobranças. Para receber os dados do pagador, incluindo o banco utilizado, adicione o parâmetro webhook>>notificacao>>pagador=true.

Depois de fazer essa configuração, as notificações incluirão o atributo gnExtras>>pagador, com o codigoBanco. Esse código do banco pode ser identificado na lista disponibilizada pelo Banco Central.
imagem enviada na mensagem pelo usuario guilherme_efi
imagem enviada na mensagem pelo usuario guilherme_efi

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Boa tarde @caiquegarcia. ! Você pode utilizar o endpoint de exibir informações do webhook Pix, passando sua chave pra ver se vai retornar algum webhook?

Avatar discord do usuario kevencampos

kevencampos

Eu sempre usei ele, não sei se tem forma melhor de testar o webhook oferecida pela Efi

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Para não te desanimar: o webhook é um desafio enfrentado por vários aqui no canal, pq ele depende muito mais de Devops do que Dev.

Avatar discord do usuario thefaccin

thefaccin

Ver Respostas

Cara não to conseguindo fazer funcionar essa webhook, Que odio kkkk

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O webhook é o que notifica o back-end de que o pagamento foi realizado, mas usar websocket para levar a informação é o front-end é bem legal. Aí você some com o QR-Code e mostra que já reconheceu o pagamento.

Avatar discord do usuario kevencampos

kevencampos

Ver Respostas

js
import express from "express";
import cors from "cors" ;
import bodyParser from "body-parser";
import routes from "./routes";

const app = express();

app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

// Essa rota poderá ser acessada a partir do URL http://localhost:3001.
// Ela é do tipo GET, por isso poderá ser acessada através da URL no navegador.
app.get("/", (req, res) => {
res.send("Hello World");
});

// Essa rota poderá ser acessada a partir do URL http://localhost:3001/notifications
// Ela é do tipo "POST", portanto não poderá ser acessada pelo navegador
app.post("/notifications", (req, res) => {
const { pix } = req.body;

if (Array.isArray(pix)) {
for (const notification of pix) {
const isRecharge = notification.devolucoes;
const isSend = notification.gnExtras?.idEnvio && !notification.txid;

if (isRecharge) {
console.log("Pix recharge notification received", notification);
continue;
}

if (isSend) {
console.log("Pix send notification received", notification);
continue;
}

console.log("Pix payment notification received", notification);
}
}

res.json({ message: "Notification received" });
});

app.listen(3001, () => {
console.log("Servidor ONLINE na porta 3001 -> acesse http://localhost:3001");
});

export default app;
Esse aqui é um exemplo de uma API rodando na porta 3001, ai você manda o webhook mandar as notificações de pagamento na rota que você criou pra isso, que nesse exemplo é a http://localhost:3001/notifications. Acredito que se realmente deseja integrar o webhook na sua aplicação, é importante você estudar a biblioteca express antes, caso já não conheça

Avatar discord do usuario kevencampos

kevencampos

Ver Respostas

Na realidade ainda estou fazendo, não tem a necessidade de usar websocket, basta você criar um servidor web para receber as notificações (webhook) de pagamento

Avatar discord do usuario thefaccin

thefaccin

Ver Respostas

Alguem aqui ja fez a webhook em node.js? Poderia me dar uma mão?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Compensa sim integrar o webhook, pois você dará uma experiência de compra mais fluida. Mas você deve fazer também verificação periódica de cobranças ainda não sinalizadas no webhook... mas com frequência menor, só para lidar com situações eventuais de falha (sejam suas, sejam da Efí).

Avatar discord do usuario kevencampos

kevencampos

Ver Respostas

ts
notificationRoutes.post("/notifications", (req, res) => {
const { pix } = req.body;

if (Array.isArray(pix)) {
for (const notification of pix) {
const isRecharge = notification.devolucoes;
const isSend = notification.gnExtras?.idEnvio && !notification.txid;

if (isRecharge) {
console.log("Pix recharge notification received", notification);
continue;
}

if (isSend) {
console.log("Pix send notification received", notification);
continue;
}

console.log("Pix payment notification received", notification);
}
}

res.json({ message: "Notification received" });
});
Fiz essas verificações, acredito que esteja correto, se alguém ver alguma falha e puder me dizer agradeço.

Será que realmente compensa integrar o sistema de notificação por webhook ou verificar o pagamento periodicamente usando a API de consulta de pagamento a partir do taxid?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @kevencampos! Tudo bem?
Existem algumas diferenças no JSON enviado em uma transação de Pix recebido e Pix enviado.

Primeiro, como o Rubens mencionou, você pode usar uma chave Pix para recebimento e outra para envio, usando o mesmo webhook URL. Dessa forma, ao receber a notificação, você já pode diferenciar pela chave.

Outro ponto que pode verificar é que o JSON de Pix enviado possui o parâmetro "tipo": "SOLICITACAO", além disso, tem também o parâmetro gnExtras>idEnvio.

Veja em nossa documentação alguns exemplos de JSON: https://dev.efipay.com.br/docs/api-pix/webhooks#requisi%C3%A7%C3%A3o

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O jeito mais fácil é ter uma chave Pix só para envio. Aí pela chave você já sabe...
... mas há outras maneiras, como notar a presença do campo idEnvio no webhook de envio.

Avatar discord do usuario kevencampos

kevencampos

Ver Respostas

Pessoal, alguem pode me ajudar ? no webhook, como posso saber a origem da notificação ? se é de pagamento, devolução ou envio ?
https://dev.efipay.com.br/docs/api-pix/webhooks

Avatar discord do usuario brooklyn8218

brooklyn8218

E agora eu fiquei pensando se existe algum jeito de confirmar pagamentos sem webhook