Авторизация
Все API запросы должны быть авторизованы с помощью API Key и подписи запроса.
Получение ключей
Каждый мерчант получает:
- API Key — уникальный ключ терминала для идентификации (у каждого терминала свой)
- Secret Key — секретный ключ мерчанта для подписи запросов (общий для всех терминалов)
Важно
Храните Secret Key в безопасности. Не передавайте его третьим лицам и не публикуйте в открытом доступе.
Заголовки запроса
Каждый API запрос должен содержать следующие заголовки:
| Заголовок | Описание |
|---|---|
Content-Type | application/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 | Терминал отключен |