Por que usar webhooks?
Sem webhooks, sua aplicação teria que perguntar para a API a cada segundo se uma transação já foi confirmada. Isso é lento e ineficiente. Com webhooks, a Alpa avisa você imediatamente quando o pagamento é confirmado, entregando os dados do evento. Assim você pode atualizar o status de um pedido, liberar acesso a um produto, enviar e-mails de confirmação ou registrar movimentações financeiras — de forma automática.Ambientes (Desenvolvimento vs Produção)
Ambientes da Alpa
- Webhooks criados com chaves de Desenvolvimento recebem eventos simulados
- Webhooks criados com chaves de Produção recebem eventos reais
Formato do payload
Todos os eventos compartilham o mesmo envelope:type identifica o evento. O campo data carrega os dados do objeto afetado.
Exemplo: transaction.completed
Dados sensíveis: documentos (CPF/CNPJ) são mascarados nos payloads. Para cartão, apenas os últimos 4 dígitos e a bandeira são enviados.
Eventos suportados
Segurança: assinatura HMAC
Cada webhook enviado pela Alpa inclui uma assinatura no headerX-Webhook-Signature, gerada com HMAC-SHA256 sobre o corpo bruto da requisição e codificada em hexadecimal (prefixada por sha256=).
Seu backend deve recalcular a assinatura e comparar com a recebida usando comparação em tempo constante.
Usando um dos SDKs oficiais? Eles já trazem verifyWebhookSignature(payload, signature, secret) pronto.
Criando uma assinatura de webhook
1
Defina seu endpoint
Crie um endpoint HTTPS público que receberá as notificações.
Requisitos do endpoint
- Deve ser HTTPS (HTTP não é aceito)
- Deve responder 200 OK dentro de 10 segundos
- Deve aceitar requisições
POSTcom body JSON
2
Crie a assinatura via API
secret da assinatura apenas na criação — guarde-o com segurança.3
Valide os eventos recebidos
Implemente a validação HMAC no seu endpoint para garantir que os eventos são legítimos.
Boas práticas
Recomendações importantes
- Use HTTPS em todos os webhooks
- Valide a assinatura HMAC em cada requisição recebida
- Processe cada evento uma única vez (idempotência via campo
id) - Responda 200 OK somente após concluir o processamento
- Não valide o payload inteiro com schemas rígidos — novos campos podem ser adicionados sem aviso prévio
Precisa de ajuda?
Nossa equipe pode te ajudar. Contate-nos: suporte@usealpa.com

