Como consultar o Secret Key do HMAC?
Vá até o Menu Administrador e procure por API/Plugins
e clique no Webhook que você gostaria de consultar o Secret Key do HMAC
Como validar o HMAC Signature?
Toda request do Webhook possui o header 'X-OpenPix-Signature' que é a signature gerada com a secret key do Webhook e o payload do Webhook. Ao receber o header você pode validar se o HMAC é válido e dar continuidade no fluxo do Webhook.
Exemplo: 'X-OpenPix-Signature': 'jgR2XF0PKDiAwHP1s+TryvxMySQ='
Exemplo de validação
- PHP
- JavaScript
- cURL
<?php
$headers['X-OpenPix-Signature'] = 'jgR2XF0PKDiAwHP1s+TryvxMySQ='; // vira da chamada do webhook
$body = '{"data_criacao":"2021-08-10T20:32:14.429Z","evento":"teste_webhook","event":"OPENPIX:CHARGE_COMPLETED"}'; // vira da chamada do webhook
$secretKeyOnOpenpixPlatform = 'hmac-secret-key'; // secret key da chave de acesso do OpenPix
$algorithm = 'sha1'; // algoritmo de hash
$hmac = base64_encode(hash_hmac($algorithm, $body, $secretKeyOnOpenpixPlatform, true));
if($hmac === $headers['X-OpenPix-Signature']) {
echo 'Valid HMAC';
} else {
echo 'Invalid HMAC';
}
?>
const createHmac = require('crypto').createHmac;
const hmacCalculateSignature = (
key,
body,
encoding,
) => createHmac('sha1', key).update(body).digest(encoding);
const hmacVerifySignature = () => {
const openpixSignatureHeader = 'jgR2XF0PKDiAwHP1s+TryvxMySQ='; // vem da chamada do webhook
const body = '{"data_criacao":"2021-08-10T20:32:14.429Z","evento":"teste_webhook","event":"OPENPIX:CHARGE_COMPLETED"}'; // vem da chamada do webhook
const key = 'hmac-secret-key'; // secret key da chave de acesso do OpenPix
const signature = hmacCalculateSignature(key, body, 'base64');
if(signature === openpixSignatureHeader) {
console.log('valid HMAC');
}
};
hmacVerifySignature();
echo -n '{"data_criacao":"2021-08-10T20:32:14.429Z","evento":"teste_webhook","event":"OPENPIX:CHARGE_COMPLETED"}' | openssl dgst -sha1 -hmac "hmac-secret-key" -binary | base64
info
O campo event
enviado junto ao payload do webhook tem seu valor conforme o tipo de evento que você escolheu no momento em que criou o webhook.
Para saber mais sobre os tipos de eventos, acesse a documentação de eventos.
Nesse link temos um exemplo de validação do HMAC usando JavaScript WebhookPost