Аутентификация
Все запросы требуют Authorization: Bearer и подписи Signature (HMAC-SHA256). См. также Колбэки и Коды ошибок.
Аутентификация
Все запросы API требуют аутентификации через Bearer token в заголовке Authorization header.
Headers:
Authorization: BearerContent-Тип: application/jsonSignature:
Проверка подписи
Все запросы и ответы должны подписываться 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