Configuração
Configure o webhook na sua organização:
| Campo | Descrição |
|---|---|
webhookUrl | URL HTTPS que receberá os eventos |
webhookSecret | Chave secreta para validação da assinatura |
Exemplo de configuração
Exemplo — substitua pelas suas credenciais reais:Tipos de evento
O plugin emite quatro tipos de evento:
| Evento | Disparado quando |
|---|---|
transfer.completed | Transferência TED OUT ou P2P concluída |
transfer.failed | Transferência falhou ou foi rejeitada |
transfer.incoming | Transferência TED IN recebida e creditada |
transfer.cancelled | Transferência cancelada pelo usuário |
Estrutura do payload
Todos os webhooks seguem a mesma estrutura base:
| Campo | Tipo | Descrição |
|---|---|---|
event | String | Tipo do evento |
timestamp | ISO 8601 | Momento em que o evento ocorreu |
organizationId | UUID | Organização à qual o evento pertence |
data | Object | Dados específicos do evento |
Eventos detalhados
transfer.completed
Enviado quando uma transferência TED OUT ou P2P é concluída.transfer.failed
Enviado quando uma transferência falha ou é rejeitada.failureCode contém o código de erro do SPB quando aplicável.
transfer.incoming
Enviado quando uma transferência TED IN é recebida e creditada.transfer.cancelled
Enviado quando uma transferência é cancelada pelo usuário.Validação da assinatura
Todos os webhooks incluem uma assinatura HMAC-SHA256 no header
X-Signature. Valide essa assinatura para garantir que o webhook é autêntico.
Header de assinatura
Validação em código
JavaScript
JavaScript
Python
Python
Go
Go
Política de retry
Se seu endpoint não responder com status 2xx, o plugin reenvia o webhook com backoff exponencial:
| Tentativa | Intervalo |
|---|---|
| 1 | Imediato |
| 2 | 5 segundos |
| 3 | 25 segundos |
| 4 | 60 segundos |
| 5 | 120 segundos |
Requisitos do endpoint
Para garantir entrega confiável:- Responda com status 2xx em até 30 segundos
- Use HTTPS com certificado válido
- Evite processamento pesado no handler (use filas)
Idempotência
Webhooks podem ser entregues mais de uma vez em cenários de retry. Implemente idempotência usando o
transferId:
Monitoramento
O plugin expõe métricas sobre entrega de webhooks:
Testando webhooks
Durante o desenvolvimento, você pode usar ferramentas como:
- webhook.site — endpoint temporário para testes
- ngrok — expõe localhost para a internet
- RequestBin — inspeciona requests recebidos
Boas práticas
| Prática | Descrição |
|---|---|
| Valide a assinatura | Sempre verifique o header X-Signature |
| Responda rápido | Retorne 200 antes de processar; use filas |
| Implemente idempotência | O mesmo webhook pode chegar mais de uma vez |
| Monitore a DLQ | Configure alertas para webhooks não entregues |
| Use HTTPS | Webhooks só são enviados para endpoints seguros |
| Trate todos os eventos | Mesmo que ignore alguns, retorne 200 |

