Авторизация
Все запросы к Merchant API должны содержать заголовки X-Client-Id и X-Signature.
X-Client-Id
Заголовок X-Client-Id должен содержать Токен, найти который можно в разделе "Мой профиль".
X-Client-Id: <token>
X-Signature
Заголовок X-Signature должен содержать строку, закодированную в формате Base64, которая подписана секретным ключом мерчанта с использованием алгоритма SHA256.
Строка для подписи формируется путем конкатенации следующих элементов в следующем порядке:
- HTTP-метод запроса (например, GET, POST).
- URL запроса (например,
/api/v1/country/available). - Тело запроса - если оно присутствует, для типа данных
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
});