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

Авторизация

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

X-Client-Id

Заголовок X-Client-Id должен содержать Токен, найти который можно в разделе "Мой профиль".

X-Client-Id: <token>

X-Signature

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

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

  1. HTTP-метод запроса (например, GET, POST).
  2. URL запроса (например, /api/v1/country/available).
  3. Тело запроса - если оно присутствует, для типа данных application/json.

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

POST/api/v1/payin/create{"amount":1000,"country": "RU","paymentMethod": "Card",...}

Запросы GET

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

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

GET/api/v1/country/available

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

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

X-Signature: <Signature>

Примеры кода

Пример Postman pre-request скрипта, который создает X-Signature и подставляет ее в каждый запрос.

const method = pm.request.method;

let fullUrl = pm.request.url;
let path = fullUrl.getPath();
let query = fullUrl.getQueryString();
if (query && query.length > 0) {
path += '?' + query;
}

const body = pm.request.body && pm.request.body.raw ? pm.request.body.raw.trim() : '';

const secret = '<your-secret-key>';

const messageToSign = method + path + body;

const hash = CryptoJS.HmacSHA256(messageToSign, secret);
const signature = CryptoJS.enc.Base64.stringify(hash);

pm.request.headers.upsert({
key: 'X-Signature',
value: signature
});