Skip to main content
Para utilizar nossas APIs e Webhooks de linhas virtuais, é necessário aderir ao nosso manual de branding

Introdução

A Salvy utiliza a plataforma Svix para garantir uma entrega segura e confiável de webhooks. A verificação da autenticidade destes eventos é essencial para manter a segurança da sua aplicação. Para realizar testes na sua integração de Webhooks, recomendamos o uso da seguinte ferramenta: Standard Webhooks - Simulate Webhooks

Verificação via SDK

A maneira recomendada para verificar a autenticidade dos eventos de webhook é utilizando o SDK da Svix disponível para diversas linguagens de programação:
Para implementar a verificação via SDK, siga o passo a passo detalhado na documentação oficial da Svix. Passe para a SDK o corpo da requisição e todos os headers recebidos: ela usa o svix-id, o svix-timestamp e o svix-signature.
Verifique a assinatura sobre o corpo bruto da requisição, exatamente como chegou. Se o seu framework já converteu o corpo em JSON, não o serialize de novo para verificar: qualquer diferença de espaços ou de ordem das chaves invalida a assinatura. Isso vale tanto para a SDK quanto para a verificação manual.

Verificação manual

Alternativamente, é possível verificar a autenticidade dos eventos manualmente:
  1. Pegue a chave de assinatura no painel de configurações de Webhooks, nos detalhes do endpoint. Ela começa com whsec_; remova esse prefixo e decodifique o restante de base64 para obter a chave.
  2. Leia os headers svix-id, svix-timestamp e svix-signature da requisição.
  3. Monte o conteúdo assinado juntando svix-id, svix-timestamp e o corpo bruto, separados por ponto: {svix-id}.{svix-timestamp}.{corpo}.
  4. Calcule o HMAC-SHA256 desse conteúdo com a chave do passo 1 e codifique o resultado em base64.
  5. Compare com as assinaturas do header svix-signature. Ele pode trazer mais de uma, separadas por espaço (por exemplo, durante a troca da chave), cada uma no formato v1,<assinatura>: a mensagem é válida se alguma delas for igual à calculada. Use uma comparação em tempo constante.
  6. Rejeite a mensagem se o svix-timestamp estiver longe do horário atual. As SDKs da Svix aceitam até 5 minutos de diferença; isso impede que uma mensagem capturada seja reenviada depois.
Para mais detalhes, consulte a documentação oficial da Svix.