Перейти к основному содержимому

Авторизация

Все запросы к Merchant API должны содержать заголовки X-Identity и X-Signature.

Запросы к Public API не требуют отправки дополнительных заголовков.

X-Identity

Заголовок X-Identity должен содержать API-ключ магазина.

X-Identity: <API-key>

X-Signature

Заголовок X-Signature должен содержать строку, закодированную в формате Base64, которая подписана секретным ключом мерчанта с использованием алгоритма SHA1.

Строка для подписи формируется путем конкатенации следующих элементов в следующем порядке:

  1. HTTP-метод запроса (например, GET, POST);

  2. URL запроса (например, https://{{domain}}/api/merchant/invoices);

  3. Тело запроса - если оно присутствует, для типа данных application/json

Пример строки для подписи:

POSThttps://{{domain}}/api/merchant/invoices{"amount":"100","currency":"RUB","type":"in"...}

Запросы GET и multipart/form-data

Для типа запроса GET или типа контента multipart/form-data строка для подписи создается путем конкатенации только метода запроса и URL запроса.

Пример для GET запроса:

GEThttps://{{domain}}/api/merchant/accounts

Пример для multipart/form-data запроса:

POSThttps://{{domain}}/api/merchant/invoices/69658e0c-8aae-4849-b2fe-aa8af418ac3a/dispute

Формирование подписи

Полученная строка подписывается секретным ключом secret с использованием алгоритма SHA1, а результат кодируется в Base64 и передается в заголовке X-Signature.

X-Signature: <Signature>

Примеры кода

function calculateSignature(string $method, string $url, string $bodyContent, string $secret): string
{
$stringToSign = $method . $url . $bodyContent;

return base64_encode(hash_hmac('sha1', $stringToSign, $secret, true));
}