O webhook ira tentar fazer 5 tentativas, a cada tentativa falha será incrementado um tempo para realizar a próxima tentativa. As tentativas serão feitas respectivamente depois de 1 minuto, 10 minutos, 1 hora, 6 horas e 24 horas, depois disso ele ira parar de fazer tentativas.
Verificação HMAC
A api fornecida pelo cliente deverá extrairá os cabeçalhos x-webhook-timestamp, x-webhook-nonce e x-webhook-signature. Em seguida, concatenar os valores do timestamp, nonce e o payload, separados por ".", formando a string base para verificação. Utilizando o webhook secret, deverá ser gerado uma assinatura HMAC com o algoritmo SHA-256 a partir dessa string concatenada. Por fim, a assinatura gerada deverá será comparada com o valor presente no cabeçalho x-webhook-signature. Caso as assinaturas não coincidam, o webhook deverá ser rejeitado.
Verificação do Nonce (Opcional)
A API deve extrair o valor do nonce a partir do cabeçalho x-webhook-nonce. Esse nonce atua como um identificador único e temporário para cada requisição. Após a extração, a API verificará se o nonce já foi previamente registrado. Caso o valor já tenha sido utilizado, a requisição do webhook deverá ser rejeitada para mitigar ataques de repetição (replay attacks). Se o nonce for novo, ele deverá ser armazenado como utilizado, garantindo que não possa ser reaproveitado em chamadas futuras.
Verificação do Timestamp (Opcional)
A API deve comparar o timestamp fornecido no cabeçalho x-webhook-timestamp com o horário atual. Caso a diferença entre os dois seja superior a 5 minutos, a requisição deverá ser rejeitada. Essa validação tem como objetivo descartar webhooks expirados, evitando o processamento de mensagens antigas ou potencialmente maliciosas.