Onde vive cada segredo
Verificação do webhook (HMAC SHA-256)
A FaciPay assina cada webhook. O headerx-facipay-content-token contém o HMAC SHA-256
do body cru calculado com o teu WEBHOOK_SECRET. A ordem dos passos é crítica.
Lê o body CRU antes de qualquer parser JSON
Se fizeres
JSON.parse primeiro, o HMAC não vai bater certo.Calcula o HMAC e compara em tempo constante
Usa
crypto.timingSafeEqual. Se os tamanhos diferirem, devolve 401 antes de comparar.Por framework
Outras boas práticas
- Valida a origem do popup. Ao ouvir
postMessage, confirmaevent.origincontra o domínio oficial do checkout antes de confiar na mensagem (ver Eventos). - Recalcula o total no servidor. Nunca aceites o
amountvindo do cliente. - Trata o webhook como idempotente. Reprocessar não pode duplicar fulfillment.
- HTTPS em produção. Obrigatório para a SDK e para receber webhooks.
Próximo passo: Go-live
Checklist para passar de sandbox a produção.