Аутентификация

Все запросы требуют Authorization: Bearer и подписи Signature (HMAC-SHA256). См. также Колбэки и Коды ошибок.

Аутентификация

Все запросы API требуют аутентификации через Bearer token в заголовке Authorization header.

Headers:

  • Authorization: Bearer

  • Content-Тип: application/json

  • Signature:

Проверка подписи

Все запросы и ответы должны подписываться HMAC-SHA256 с вашим секретным ключом. Это гарантирует целостность и подлинность данных между вашей системой и API.

Генерация подписи

Для генерации подписи создайте HMAC-SHA256 хеш тела запроса с использованием секретного ключа.

Пример генерации подписи на PHP:

/** @var \Psr\Http\Сообщение\RequestInterface $request */
$signature = hash_hmac(
  'sha256',
  $request->getBody()->getContents(),
  $secretKey
);
$request->withHeader('Signature', $signature);

Or JavaScript/Нетde.js:

const hmac = require('crypto-js/hmac-sha256');
const body = {
    orderId: '123',
    // ...
};
const signature = hmac(JSON.stringify(body), 'secretKey')
  .toString();
// 0a059c58184f388c6fe56bc07bf0b71f941ad85175283b5257fc9490422d9f6e

Или Python:

import hashlib
import hmac
import json
def _signature(data: dict, secret: str) -> str:
    # IMPORTANT: use separators to remove spaces after : and ,
    string = json.dumps(data, separators=(",", ":"))
    secret_key = bytes(secret, "utf8")
    return hmac.new(secret_key, string.encode(), hashlib.sha256).hexdigest()
def _gen_headers(payload: dict, api_key: str, secret: str) -> tuple:
    sign = _signature(payload, secret)
    headers = {
        "Signature": sign,
        "Content-Тип": "application/json",
        "Authorization": f"Bearer {api_key}"
    }
    return headers, payload
# Example usage:
data = {
    'orderId': '123',
    'merchantId': 'your_merchant_id',
    'amount': 1000
}
headers, payload = _gen_headers(data, 'your_api_key', 'your_secret_key')
print(headers['Signature'])
# 0ff2fa58c4811407c4cd5fcb5adef76bf32c4213a579da5b17ebffb61525cb11