Skip to main content
O SpherePay assina cada entrega de webhook para que você possa confirmar que ela realmente veio do SpherePay e não foi adulterada em trânsito. O SpherePay nunca envia uma entrega sem assinatura. Sempre verifique a assinatura antes de processar um payload e rejeite qualquer coisa que falhe na verificação com uma resposta não-2xx.

Cabeçalhos de entrega

Toda tentativa de entrega carrega estes cabeçalhos: Os cabeçalhos descrevem a tentativa de entrega; o corpo descreve o evento. Em um replay, Sphere-Timestamp e Sphere-Signature são gerados novamente — de forma que o mesmo caminho de código de verificação trata originais e replays — enquanto o corpo permanece idêntico byte a byte ao original.

Como a assinatura é calculada

A assinatura é um digest HMAC-SHA256, codificado em hexadecimal:
  • secret — o segredo de assinatura do endpoint (whsec_...), retornado uma única vez quando você criou o endpoint.
  • timestamp — o valor do cabeçalho Sphere-Timestamp.
  • rawBody — os bytes brutos do corpo da requisição HTTP, exatamente como transmitidos.
Para verificar: calcule o mesmo digest você mesmo e compare-o com Sphere-Signature usando uma comparação de tempo constante.
Verifique contra o corpo bruto da requisição, não contra uma versão reserializada. Fazer o parse do JSON e recodificá-lo pode reordenar chaves ou alterar espaços em branco, o que muda os bytes e quebra a verificação. A maioria dos frameworks web exige configuração explícita para expor o corpo bruto — capture-o antes de qualquer middleware de JSON ser executado.

Proteja-se contra ataques de replay

Para impedir que entregas capturadas sejam reenviadas por terceiros, rejeite entregas cujo Sphere-Timestamp tenha mais de 5 minutos. Replays manuais recebem um timestamp e uma assinatura novos, então replays legítimos sempre passam nesta verificação.

Implementações de referência

Cada snippet recebe os bytes do corpo bruto, os dois cabeçalhos e o segredo do seu endpoint, e retorna se a entrega é autêntica.

Quando a verificação falha

Responda com um código de status não-2xx (por exemplo 401) e não processe o payload. A entrega é registrada como failed do lado do SpherePay, dando a você uma trilha de auditoria na API de Eventos.
Se você registrou a mesma URL receptora em múltiplas aplicações do SpherePay, o endpoint de cada aplicação tem seu próprio segredo. Use o applicationId do payload para selecionar o segredo correto — consulte Payloads de eventos. Se não puder fazer o parse do corpo antes de verificar, tente cada um dos seus segredos conhecidos.
Última modificação em 11 de agosto de 2026