Toda notificação que enviamos para o seu endpoint é assinada. Fazemos isso incluindo um nó com o nome "signature" no payload em cada evento que enviamos. Isso permite verificar e garantir que o evento foi enviado pela Dom Pagamentos e não por um terceiro.
Como validar a assinatura
Nossa assinatura é um token JWT assinado pelo seu token da api.
Segue um exemplo de como verifica-lo utilizando a biblioteca adhocore/php-jwt:
- Instalação da biblioteca via composer:
composer require adhocore/jwt
- Exemplo para validar:
use Ahc\Jwt\JWT;
//Assinatura recebida pelo webhook:
$signature = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ImY5NGJkY2M4LTM4ZjAtNDk3ZS1iNTBkLWI5YmZiM2Y2OGYzYSIsImV4cCI6MTcxMzE5NTY4NX0.g73YIXnOFTWiXYzxH6RdLHEazz2RuSQQ4WWbMdzvYGQ";
//Seu token da API utilizado para enviar a transação:
$token_api = "d98db55d-de9b-11ee-9bf7-0ad997c7b01f";
try {
$jwt = new JWT($token_api, 'HS256');
$payload = $jwt->decode($signature);
print_r($payload);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
- Se a assinatura estiver válida, o decode terá o ID da transação, exemplo:
Array
(
[id] => f94bdcc8-38f0-497e-b50d-b9bfb3f68f3a
[exp] => 1713195685
)
