Skip to main content
Todo envio leva o cabeçalho:
  • t é o horário do envio (Unix, segundos).
  • v1 é o HMAC-SHA256, em hexadecimal, da string "<t>.<corpo>", com o seu segredo (whsec_..., o da URL ou o da conta).

Como validar

1

Pegue o corpo cru

Os bytes exatos da requisição, antes de qualquer parse de JSON. Reformatar o JSON muda a assinatura.
2

Separe t e v1

Divida o cabeçalho por vírgula e cada parte por =.
3

Recuse horário velho

Se t estiver a mais de 5 minutos do relógio do seu servidor, recuse (proteção contra repetição).
4

Calcule e compare

HMAC-SHA256(segredo, t + "." + corpo) em hex. Compare com v1 em tempo constante.
5

Ignore repetidos

Guarde o id do evento (evt_...) e descarte se já tiver sido processado.

Exemplos

Erros comuns

Trocar o segredo

Em Integrações e API › Webhooks › Gerar novo segredo. O antigo para de valer na hora, então atualize o seu servidor primeiro e gere o novo em seguida; os envios na fila já saem assinados com o novo.