Webhooks

Através do recurso de webhooks, a plataforma enviará um POST para as URLS cadastradas sempre quando algum evento acontecer. O payload do recurso é enviado com todas as includes disponíveis.

Eventos disponíveis

GET https://api.dooki.com.br/v2/{alias}/webhooks/events

Segurança A validação do webhook serve para verificar se realmente ele foi enviado pela Yampi, e é de extrema importância a sua utilização para que suas transações estejam seguras.

Para fazer a validação, são necessárias duas informações de nosso webhook:

  • Valor do header X-Yampi-Hmac-SHA256. Vamos chamar esse valor de "assinatura do webhook";

  • Corpo da requisição (no mesmo formato mostrado na seção anterior). Com esses dois valores, basta realizar o base64 do algoritmo HMAC-SHA256 do corpo da requisição utilizando a chave secreta do Webhook e comparar com a assinatura do webhook. Se os valores forem iguais, excelente. Caso contrário, não fomos nós que enviamos essa requisição!

Veja abaixo um exemplo de função em PHP que calcula a assinatura:

function hmac_signature(array $body, $webHookSecret)
{
    $payload = json_encode($body);

    return base64_encode(hash_hmac('sha256', $payload, $webHookSecret, true));
}

// Calculando a assinatura

$body = [
    'event' => 'order.created',
    'time' => '2020-06-20 00:00:00',
    'resource' => [
        'id' => 1121333,
        // Aqui vem todo o payload do resource.
    ],
];

$signature = hmac_signature($body, 'wh_FBmkbmkMSAKmkMBKmdsbUUHjnlmlm');

echo $signature; // Output: NzhjMmM3NzcwZDM5NmM1ZWYxNjhjMDI5NmVhYjgzOTFlNDNlNmU0OWU5ZWZhMTRiYTIyNTI0NzdhNTVhZTMxNQ

Você encontrará a chave secreta do Webhook logo após ele ser criado.

Listar webhooks

GET https://api.dooki.com.br/v2/{alias}/webhooks

Criar um webhook

POST https://api.dooki.com.br/v2/{alias}/webhooks

Request para incluir um novo webhook

{
    "url": "http://suaurl.com/api/webhooks",
    "events": ["order.created", "cart.reminder"],
    "name": "Nome do webhook"
}

Response de webhook

{
    "data": [
        "id": 1,
        "url": "http://suaurl.com/api/webhooks"
    ]
}

Payload enviado pelo webhook

{
    "event": "order.created",
    "resource": {
        // Payload de um pedido 
    }
}

Atualizar um webhook

PUT https://api.dooki.com.br/v2/{alias}/orders/webhooks/{id}

Excluir um webhook

DELETE https://api.dooki.com.br/v2/{alias}/orders/webhooks/{id}

Last updated