Подпись запросов

Все запросы должны отправляться методом POST.

Запрос должен быть подписан.

Для подписания запросов Content-Type application/json необходимо использовать MD5-хэш тела запроса, закодированный в base64 объединенный с вашим закрытым ключом API.

Передаваемый JSON должен быть отсортирован в алфавитном порядке.

Для подписания запросов отличающихся от Content-Type application/json вам необходимо закодировать пустую строку в base64 и объединить ее с вашим закрытым ключом API.

В каждым запросе необходимо передавать 2 параметра в Header:

Parameter
Описание

Merchant

Merchant ID, который Вы можете найти в личном кабинете мерчанта в разделе интеграция

Signature

Подписанное тело запроса

Пример подписи запросов с Content-Type application/json

const md5 = require('md5');

const API_KEY = '6b8dcc0cd0bf4e42986d6b4da7edbfd5';

const data = {
    "amount": "30000",
    "currency": "UZS",
    "order_id": "122251322334",
    "payment_type": "HUMOP2P",
    "additional_data": "example",
    "url_callback": "https://example.com/callback",
    "url_success": "https://example.com/url_success",
    "url_error": "https://example.com/url_error",
    "fingerprint": "f23b9d67-9cee-4096-b9d3-492efbf32471"
};

const getSortedObject = (obj) => {
  if (typeof obj !== "object" || Array.isArray(obj) || obj === null) return obj;
  const sortedObject = {};
  const keys = Object.keys(obj).sort();
  keys.forEach(key => sortedObject[key] = getSortedObject(obj[key]));
  
  return sortedObject;
 }
 
const sortedObject = getSortedObject(data);
const json = JSON.stringify(sortedObject).replace(/[']/g, '');

const signature = md5(`${Buffer.from(json).toString('base64')}${API_KEY}`);

Last updated