POST para o seu endereço. A assinatura prova que a entrega saiu da Westhetics, para este webhook, e não foi alterada no caminho. A Westhetics segue o Standard Webhooks, o mesmo padrão de outros serviços: dá para usar as bibliotecas prontas.
Os três cabeçalhos
A assinatura é o HMAC-SHA256 de
{webhook-id}.{webhook-timestamp}.{corpo cru}, com a chave que vem depois do whsec_ do segredo, decodificada de base64.
Com a biblioteca do padrão
As bibliotecas aceitam o segredo com o prefixowhsec_, conferem a assinatura em tempo constante e recusam entrega com mais de 5 minutos de diferença no relógio.
Sem biblioteca
O mesmo cálculo, à mão. Compare em tempo constante e recuse diferença de relógio acima de 5 minutos.Depois de conferir
- Ignore o repetido. A mesma entrega pode chegar de novo (uma tentativa que você respondeu tarde, um reenvio manual). Guarde o
webhook-ide descarte o que já tratou. - Não confie na ordem. Ordene por
createdAtdo evento. - Responda rápido.
2xxem até 10 segundos; o trabalho vai para uma fila.
O segredo
O segredowhsec_… aparece quando o webhook é criado. Depois, a gestora vê em Revelar segredo, na tela do app, e o próprio app pede por GET /v1/webhooks/{id}/secret. Cada revelação fica na trilha.
Trocar o segredo gera outro e mantém o anterior válido por 24 horas. Nesse tempo, cada entrega leva as duas assinaturas em webhook-signature, separadas por espaço: o seu código aceita a entrega se uma das duas conferir. Troque o segredo no seu servidor dentro desse prazo.