Коды ошибок
API возвращает ошибки в JSON формате.
Формат ответа
{
"error": "PAY_002",
"message": "Invalid request body"
}
Ошибки авторизации (AUTH)
| Код | HTTP | Описание |
|---|---|---|
AUTH_001 | 401 | Неверный API key |
AUTH_002 | 401 | Неверная подпись запроса |
AUTH_003 | 401 | Мерчант не найден |
AUTH_004 | 401 | Отсутствует заголовок X-Identity |
AUTH_005 | 403 | Мерчант заблокирован |
AUTH_006 | 401 | Отсутствует заголовок X-Signature |
AUTH_007 | 403 | Терминал отключен |
Ошибки платежей (PAY)
| Код | HTTP | Описание |
|---|---|---|
PAY_001 | 500 | Внутренняя ошибка |
PAY_002 | 400 | Неверные параметры запроса |
PAY_003 | 409 | Заказ с таким ext_id уже существует |
PAY_004 | 503 | Нет доступных реквизитов |
PAY_005 | 429 | Слишком много платежей с одинаковой суммой |
PAY_006 | 404 | Платёж не найден |
PAY_007 | 400 | Платёж нельзя отменить |
PAY_008 | 400 | Платёж нельзя подтвердить |
PAY_009 | 400 | Файл слишком большой (макс 10MB) |
Ошибки выводов (WDR)
| Код | HTTP | Описание |
|---|---|---|
WDR_001 | 400 | Неверные параметры запроса |
WDR_002 | 400 | Недостаточно средств |
WDR_003 | 404 | Вывод не найден |
Ошибки апелляций (DIS)
| Код | HTTP | Описание |
|---|---|---|
DIS_001 | 400 | Апелляцию можно открыть только для CANCELLED |
DIS_002 | 409 | Апелляция уже существует |
DIS_003 | 400 | Отменить можно только из статуса DISPUTE |
Системные ошибки (SYS)
| Код | HTTP | Описание |
|---|---|---|
SYS_001 | 500 | Внутренняя ошибка |
Обработка ошибок
JavaScript
async function createPayment(data) {
const response = await fetch('https://api.settler.pw/api/v1/payments', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Identity': apiKey,
'X-Signature': signature
},
body: JSON.stringify(data)
});
if (!response.ok) {
const error = await response.json();
switch (error.error) {
case 'AUTH_001':
case 'AUTH_002':
throw new Error('Ошибка авторизации: проверьте ключи');
case 'PAY_003':
throw new Error('Заказ уже существует');
case 'PAY_004':
throw new Error('Нет доступных реквизитов, попробуйте позже');
case 'WDR_002':
throw new Error('Недостаточно средств для вывода');
default:
throw new Error(error.message);
}
}
return response.json();
}
Python
import requests
def create_payment(data):
response = requests.post(
'https://api.settler.pw/api/v1/payments',
json=data,
headers={
'X-Identity': api_key,
'X-Signature': signature
}
)
if not response.ok:
error = response.json()
code = error.get('error')
if code in ['AUTH_001', 'AUTH_002']:
raise Exception('Ошибка авторизации: проверьте ключи')
elif code == 'PAY_004':
raise Exception('Нет доступных реквизитов')
elif code == 'WDR_002':
raise Exception('Недостаточно средств для вывода')
else:
raise Exception(error.get('message'))
return response.json()