Confira o exemplo
Os arquivos desta POC, com o destino de cada um.
Por que separar
A Legitimuz reentrega o que não responde2xx, em intervalos crescentes. Se o seu handler
processa dentro do request, dois problemas aparecem juntos: uma tarefa lenta vira timeout e a
entrega é reenviada; e o seu retry passa a ser o retry da Legitimuz, que não conhece o seu banco.
Separar deixa cada lado com a retentativa que ele entende.
O endpoint
app/api/webhooks/legitimuz/route.ts
O
jobId substitui a tabela de deduplicação das outras POCs. Um id só existe uma vez na fila,
então a segunda entrega do mesmo evento não cria um segundo job.O worker
workers/outcome.ts
Ordem não é garantida
Dois eventos da mesma verificação podem chegar fora de ordem. Se a sua lógica depende disso, use ooccurred_at do corpo e descarte o que for mais antigo que o estado já gravado:
Ignorar evento atrasado
Antes de rodar
.env
Use uma integração sandbox. Nenhum dos três valores vai para o browser ou para o app.
Esta POC precisa também de um Redis:
.env
O que esta POC não faz
- Sem dead-letter queue. Depois de 5 tentativas o job fica em
failede ninguém é avisado. - Sem métrica de profundidade da fila.
- Sem lock por
ref_id: dois eventos da mesma verificação podem rodar em paralelo.
Próximo passo
Receptor de webhook
A conferência da assinatura, linha a linha.
Retomada e expiração
O que fazer quando o titular some no meio.