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

Авторизация

Все API запросы должны быть авторизованы с помощью API Key и подписи запроса.

Получение ключей

Каждый мерчант получает:

  1. API Key — уникальный ключ терминала для идентификации (у каждого терминала свой)
  2. Secret Key — секретный ключ мерчанта для подписи запросов (общий для всех терминалов)
Важно

Храните Secret Key в безопасности. Не передавайте его третьим лицам и не публикуйте в открытом доступе.

Заголовки запроса

Каждый API запрос должен содержать следующие заголовки:

ЗаголовокОписание
Content-Typeapplication/json
X-IdentityВаш API Key
X-SignatureПодпись запроса

Создание подписи

Подпись создаётся с помощью алгоритма HMAC-SHA1 и передаётся в кодировке Base64.

Строка для подписи

{METHOD}{URL}{BODY}

Где:

  • METHOD — HTTP метод (GET, POST и т.д.)
  • URL — полный URL запроса включая протокол
  • BODY — тело запроса в формате JSON (пустая строка для GET)

Пример на JavaScript

const crypto = require('crypto');

const method = 'POST';
const url = 'https://api.settler.pw/api/v1/payments';
const body = JSON.stringify({
amount: 5000,
method: 'SBP',
ext_id: 'order_12345'
});

const stringToSign = method + url + body;

const signature = crypto
.createHmac('sha1', secretKey)
.update(stringToSign)
.digest('base64');

Пример на Python

import hmac
import hashlib
import base64
import json

method = 'POST'
url = 'https://api.settler.pw/api/v1/payments'
body = json.dumps({
'amount': 5000,
'method': 'SBP',
'ext_id': 'order_12345'
})

string_to_sign = method + url + body

signature = base64.b64encode(
hmac.new(
secret_key.encode(),
string_to_sign.encode(),
hashlib.sha1
).digest()
).decode()

Пример на PHP

$method = 'POST';
$url = 'https://api.settler.pw/api/v1/payments';
$body = json_encode([
'amount' => 5000,
'method' => 'SBP',
'ext_id' => 'order_12345'
]);

$stringToSign = $method . $url . $body;

$signature = base64_encode(
hash_hmac('sha1', $stringToSign, $secretKey, true)
);

Пример запроса

curl -X POST https://api.settler.pw/api/v1/payments \
-H "Content-Type: application/json" \
-H "X-Identity: your-api-key" \
-H "X-Signature: calculated-signature" \
-d '{
"amount": 5000,
"method": "SBP",
"ext_id": "order_12345"
}'

Ошибки авторизации

КодОписание
AUTH_001Неверный API Key
AUTH_002Неверная подпись
AUTH_004Отсутствует заголовок X-Identity
AUTH_005Мерчант заблокирован
AUTH_006Отсутствует заголовок X-Signature
AUTH_007Терминал отключен