Webhooks

Os webhooks permitem que o sistema seja notificado de algo que acontecem em alguma conta.

A autenticação da mensagem é realizada através da criptografia AES da mensagem codificada com UTF-8 e pode ser validada com o hash SHA-256.

❗️

Os eventos seguintes serão enviados apenas após o atual ser recebido com sucesso

Estrutura

O evento do webhook contém os seguintes campos:

CampoDescrição
TypeO tipo do evento
Happened_atQuando o evento aconteceu
DataOs dados do evento
Data.IvVetor de inicialização AES
Data.EncryptedMensagem codificada em UTF-8 e criptografada em AES
Data.HashHash SHA-256 da mensagem codificada em UTF-8

Leitura

Considerando o exemplo abaixo com a chave AES em Base64: Ub4RuV4UujErUJWX/QPvEAM22j+HPMYT6cEmMGMHDHk=

{
 "type": "teste",
 "happened_at": "2025-01-01T03:00:00",
 "data": {
  "iv": "5cX3b4FE89HHYKFMQxYV4A==",
  "encrypted": "1FvybSCq8ZdZM7PKxyPqBw==",
  "hash": "ifMIIQx8eCC60JdPMedRv6Qz0gZqk+gIlHwxiN7bpuM="
 }
}

O primeiro passo é extrair os bytes dos campos do objeto "data".
Em "iv" será encontrado o vetor de inicialização AES.
Em "encrypted" será encontrado os dados criptografados em AES da mensagem.
Em "hash" será encontrado o hash em SHA-256 da mensagem.

O próximo passo é utilizar a chave AES para obter os dados originais da mensagem.

Feito isso, utilize o SHA-256 para gerar um hash e comparar com o original.
Se não estiver igual, ignore a mensagem, pois não veio da OxPay.

Estando tudo OK, deve-se utilizar o encoding UTF-8 para converter os bytes em uma string.

Realizando todos os passos com sucesso, será encontrada a mensagem "Teste", confirmando a implementação do alritmo.

📘

Aqui se encontra uma implementação em C# desse exemplo