Visão Geral
Webhooks permitem que você receba notificações em tempo real sobre eventos importantes na sua conta Eyo Wallet, como pagamentos confirmados, saques processados e mudanças de status.Configurar Webhook
Configure o webhook na criação de uma API Key ou atualize o webhook da API Key principal:Eventos Enviados
A Eyo Wallet envia webhooks para os seguintes eventos:Pagamento Aprovado (payment.approved)
Quando um pagamento PIX é confirmado e aprovado:
Pagamento Expirado (payment.expired)
Quando um pagamento expira sem ser pago:
Pagamento Reembolsado (payment.refunded)
Quando um pagamento é reembolsado:
Saque Processado (withdrawal.completed)
Quando um saque é processado com sucesso:
Saque Falhou (withdrawal.failed)
Quando um saque falha:
Headers Enviados
A Eyo Wallet envia os seguintes headers em cada requisição de webhook:| Header | Descrição |
|---|---|
X-Webhook-Signature | Assinatura HMAC-SHA256 do payload (formato: sha256=...) |
X-Webhook-Timestamp | Timestamp Unix em segundos da requisição |
Content-Type | application/json |
User-Agent | eyo-wallet-API/1.0 |
Segurança e Verificação de Assinatura
Cada webhook é assinado usando HMAC-SHA256 com sua API Key como secret. Você DEVE verificar a assinatura para garantir que o webhook é autêntico e vem da Eyo Wallet.Como Funciona a Assinatura
- A Eyo Wallet cria uma assinatura HMAC-SHA256 do payload JSON usando sua API Key
- A assinatura é enviada no header
X-Webhook-Signatureno formatosha256=... - Você deve recriar a assinatura usando o mesmo método e comparar com a recebida
- Se as assinaturas corresponderem, o webhook é autêntico
Processar Webhooks
Seu endpoint de webhook deve:- Verificar a assinatura: Validar que a requisição vem da Eyo Wallet usando HMAC-SHA256
- Validar o timestamp (opcional): Prevenir ataques de replay verificando se o timestamp não é muito antigo
- Processar o evento: Executar a lógica necessária baseada no tipo de evento
- Retornar 200: Responder com status HTTP 200 para confirmar recebimento
Boas Práticas de Segurança
Boas Práticas de Implementação
Testar Webhooks Localmente
Para testar webhooks localmente durante desenvolvimento, você pode usar ferramentas como:- ngrok: Expõe seu servidor local para a internet (
ngrok http 3000) - localtunnel: Alternativa ao ngrok (
lt --port 3000) - webhook.site: Serviço temporário para receber webhooks (útil para ver a estrutura)
Testando a Verificação de Assinatura
Para testar se sua verificação de assinatura está funcionando corretamente, você pode criar um script de teste:Troubleshooting
Webhook retorna 401 (Invalid signature)
- Verifique se está usando a API Key correta (a mesma usada para configurar o webhook)
- Certifique-se de que o payload está sendo serializado exatamente como recebido (sem alterar ordem de chaves ou espaços)
- Verifique se está comparando a assinatura completa incluindo o prefixo
sha256=
Webhook retorna 400 (Invalid timestamp)
- Verifique se o relógio do servidor está sincronizado
- Ajuste o
maxAgeSecondsse necessário (padrão recomendado: 300 segundos = 5 minutos)
Webhook não está sendo recebido
- Verifique se a URL está acessível publicamente (não localhost)
- Verifique logs do servidor para erros
- Confirme que o endpoint retorna status 200
- Verifique se há firewall bloqueando requisições da Eyo Wallet
Consulte a seção API Keys para mais informações sobre como configurar webhooks nas suas API Keys.