Validação HMAC (Depreciado)
A validação HMAC é o Primeiro método para validar webhooks da Woovi.
Qual a diferença entre X-OpenPix-Signature (HMAC) e x-webhook-signature?
Existem dois métodos de validação de webhook disponíveis:
| Método | Header | O que valida | Chave utilizada |
|---|---|---|---|
| HMAC | X-OpenPix-Signature | Valida que o webhook veio da sua configuração específica de webhook | Secret key do seu webhook |
| x-webhook-signature | x-webhook-signature | Valida que o webhook veio da Woovi (valida o remetente) | Chave pública da Woovi |
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 assinatura gerada com a secret key do seu 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
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