For the complete documentation index, see llms.txt. This page is also available as Markdown.
Segurança
🔐 Validação de Assinatura de Webhooks
Para garantir a autenticidade e a integridade das notificações enviadas pelo nosso sistema, todos os webhooks são assinados utilizando um segredo compartilhado (webhook secret), que realiza a assinatura do payload via HMAC SHA-256.
📌 Como funciona
Cada requisição enviada contém:
O payload (corpo da requisição)
Um header HTTP:
X-Signature: {assinatura}
Essa assinatura é gerada aplicando um HMAC SHA-256 sobre o payload bruto utilizando o token de segurança configurado:
image.png
🎯 Objetivo da validação
O sistema receptor deve validar a assinatura para garantir:
✔️ Que o payload não foi alterado (integridade)
✔️ Que a requisição foi enviada por um remetente confiável (autenticidade)
✔️ Que a comunicação é segura contra ataques de replay ou spoofing
⚙️ Passo a passo para validação
Ao receber o webhook, seu sistema deve:
Ler o payload bruto da requisição
Importante: não utilize payload já parseado (ex: JSON decodificado)
$payload = request()->getContent();
$secret = 'xuiq12' // aqui vai o token que é exibido na criação do webhook
$receivedSignature = request()->header('x-signature');
$expectedSignature = hash_hmac('sha256', $payload, $secret);
if (! hash_equals($expectedSignature, $receivedSignature)) {
abort(403, 'Invalid signature');
}