Webhooks
🎣 Configuração de Webhooks
Endpoints de Webhook
POST /webhooks/stripe
POST /webhooks/paypal
POST /webhooks/mercadopagoConfiguração no Dashboard
Acesse o painel administrativo
Vá para "Configurações" > "Webhooks"
Adicione a URL:
https://api.paymentgateway.com/webhooks/{provider}Configure os eventos desejados
📡 Eventos Suportados
Stripe
payment_intent.succeeded
Pagamento bem-sucedido
payment_intent.payment_failed
Pagamento falhou
charge.dispute.created
Chargeback criado
invoice.payment_succeeded
Fatura paga
PayPal
PAYMENT.CAPTURE.COMPLETED
Pagamento capturado
PAYMENT.CAPTURE.DENIED
Pagamento negado
BILLING.SUBSCRIPTION.ACTIVATED
Assinatura ativada
MercadoPago
payment
Status de pagamento alterado
plan
Plano de assinatura alterado
subscription
Assinatura alterada
🔐 Validação de Assinatura
Stripe
PayPal
MercadoPago
📝 Estrutura de Payload
Formato Padronizado
Exemplo Stripe
🔄 Retry Logic
Política de Retry
Tentativas: 5 tentativas máximas
Backoff: Exponencial (1s, 2s, 4s, 8s, 16s)
Timeout: 30 segundos por tentativa
Status de Webhook
pending
Aguardando processamento
processing
Em processamento
processed
Processado com sucesso
failed
Falha no processamento
ignored
Ignorado (evento não suportado)
📊 Monitoramento
Logs de Webhook
Métricas
Taxa de sucesso por provedor
Tempo médio de processamento
Número de retries por evento
Eventos mais frequentes
🧪 Testes de Webhook
Webhook de Teste
Simulação de Eventos
Use as ferramentas de cada provedor:
Stripe: Stripe CLI
stripe listen --forward-to localhost:3000/webhooks/stripePayPal: PayPal Developer Dashboard > Webhooks Simulator
MercadoPago: MercadoPago Developer Tools
⚠️ Troubleshooting
Problemas Comuns
Signature Validation Failed
Verificar secret do webhook
Confirmar que está usando raw body
Validar timezone/timestamp
Webhook Not Received
Verificar firewall/proxy
Confirmar URL está acessível publicamente
Verificar logs do provedor
Duplicate Processing
Implementar idempotência
Verificar se webhook está configurado múltiplas vezes
Documentação atualizada: December 2024
Last updated
Was this helpful?

