Perguntas frequentes
Por que a assinatura do meu webhook não confere?
Em 9 de 10 casos o código assina um objeto JSON re-serializado em vez do corpo bruto da requisição. Os frameworks fazem parse do JSON e, ao converter de novo em texto, mudam espaços, ordem das chaves e escapes. Calcule sempre o HMAC sobre os bytes brutos recebidos. Outras causas: segredo errado (test ou live), hex em vez de base64, um prefixo com timestamp (a Stripe assina timestamp.body) ou comparar hex em maiúsculas com minúsculas.
O que faz o “Find why it doesn't match”?
Ele testa centenas de combinações — algoritmos (SHA-1/256/384/512), codificações do segredo (texto, hex, base64, Svix whsec_), variantes do corpo (minificado, formatado, chaves ordenadas, quebra de linha final, estilos JSON de PHP/Python, prefixos com timestamp) e formatos de saída — e diz qual o provedor usou.
É seguro colar meu segredo?
Toda a assinatura é feita localmente com a Web Crypto API; o segredo nunca sai do seu navegador. O botão de IA envia só o nome do provedor, as configurações e uma amostra do corpo — nunca o segredo. Mesmo assim, prefira segredos do ambiente de teste.