Обработка ошибок и рекомендации
Руководство по обработке ошибок при интеграции с API Sagi.
Коды ошибок HTTP
2xx - Успешные ответы
- 200 OK - Запрос выполнен успешно
- 201 Created - Ресурс создан (например, транзакция)
4xx - Ошибки клиента
- 400 Bad Request - Неверный формат данных или параметров
- 401 Unauthorized - Отсутствует или недействителен токен авторизации
- 403 Forbidden - Недостаточно прав доступа
- 404 Not Found - Ресурс не найден (например, пользователь)
- 429 Too Many Requests - Превышен лимит запросов
5xx - Ошибки сервера
- 500 Internal Server Error - Внутренняя ошибка сервера
- 502 Bad Gateway - Ошибка шлюза
- 503 Service Unavailable - Сервис временно недоступен
- 504 Gateway Timeout - Таймаут запроса
Специфичные коды ошибок Sagi
Пользователи и аутентификация (100-999)
Аутентификация
{
"code": 401,
"message": "authentication error"
}
{
"code": 401,
"message": "invalid login or password"
}
{
"code": 401,
"message": "invalid license"
}
{
"code": 404,
"message": "failed creating token"
}
Пользователи
{
"code": 100,
"message": "user not registered"
}
{
"code": 403,
"message": "wrong address identifier received"
}
{
"code": 409,
"message": "invalid gender provided"
}
{
"code": 410,
"message": "error format Birthday"
}
{
"code": 411,
"message": "user is not promoter"
}
{
"code": 427,
"message": "invalid length user code"
}
{
"code": 428,
"message": "can't find user by code"
}
Транзакции и заказы (3000-3999)
Доступ и права
{
"code": 3000,
"message": "denied access for provided order"
}
Суммы и лимиты
{
"code": 3001,
"message": "amount is less than minimum amount"
}
{
"code": 3002,
"message": "amount is greater than maximum amount"
}
{
"code": 3006,
"message": "invalid order amount"
}
Состояние заказов
{
"code": 3013,
"message": "invalid order state"
}
{
"code": 3014,
"message": "no such order in database"
}
{
"code": 3015,
"message": "order was manually reverted"
}
{
"code": 3017,
"message": "order already declined"
}
{
"code": 3020,
"message": "order time expired"
}
{
"code": 3024,
"message": "order is unable to revert"
}
Бонусы и баланс
{
"code": 3023,
"message": "user private balance is not enough"
}
{
"code": 3025,
"message": "code for using private balance is wrong"
}
Ошибки интеграции с Epay
{
"code": 3010,
"message": "epay integration error"
}
{
"code": 3200,
"message": "authorization error, invalid 3dsecure"
}
{
"code": 3201,
"message": "not permitted to client by his bank"
}
{
"code": 3202,
"message": "no such card"
}
{
"code": 3203,
"message": "not sufficient funds in his card"
}
{
"code": 3204,
"message": "card is expired"
}
{
"code": 3206,
"message": "exceeds withdrawal amount limit"
}
Филиалы (4000-4999)
Права доступа
{
"code": 4000,
"message": "no permission to create branch"
}
{
"code": 4001,
"message": "no permission to update branch"
}
{
"code": 4033,
"message": "no permission to view customers"
}
{
"code": 4034,
"message": "no permission to view transactions"
}
Конфигурация филиала
{
"code": 4003,
"message": "branch with specified id not found"
}
{
"code": 4004,
"message": "contract rules for branch were not specified"
}
{
"code": 4051,
"message": "branch is disabled"
}
{
"code": 4064,
"message": "private cashback is not activated for the branch"
}
Безопасность и черные списки
{
"code": 4052,
"message": "клиент в черном списке"
}
{
"code": 4053,
"message": "превышен лимит дневной транзакции"
}
Программы лояльности
{
"code": 4037,
"message": "the title of the award cannot be empty"
}
{
"code": 4038,
"message": "the stamp count of the award cannot be empty"
}
{
"code": 4039,
"message": "the number of awards received is less than the required number of awards"
}
Промокоды
{
"code": 4057,
"message": "промокод истек"
}
{
"code": 4058,
"message": "промокод уже был использован"
}
{
"code": 4059,
"message": "промокод не найден"
}
Телефоны и SMS (5000-5999)
{
"code": 5000,
"message": "invalid phone length"
}
{
"code": 5002,
"message": "not supported platform"
}
{
"code": 5005,
"message": "query is too short"
}
Общие ошибки (10000+)
{
"code": 10000,
"message": "no permission to this operation"
}
{
"code": 10001,
"message": "invalid uri path"
}
{
"code": 10005,
"message": "Неверные параметры"
}
{
"code": 10006,
"message": "Пользователя нет в черном списке"
}
Рекомендации по обработке ошибок
1. Повторные попытки
Повторять запрос только при временных ошибках:
- HTTP 5xx (серверные ошибки)
- HTTP 429 (превышен лимит запросов)
- Сетевые таймауты
НЕ повторять при постоянных ошибках:
- HTTP 4xx (ошибки клиента)
- Коды ошибок связанные с бизнес-логикой (3xxx, 4xxx)
2. Логирование
Обязательно логируйте:
- Все ошибки с кодами 3xxx и 4xxx
- Повторные попытки запросов
- Операции с финансами (бонусы, транзакции)
3. Пользовательские сообщения
Переводите коды ошибок в понятные сообщения:
- 3025 → "Неверный код подтверждения"
- 4052 → "Клиент в черном списке филиала"
- 3023 → "Недостаточно бонусов для списания"
- 4051 → "Филиал временно недоступен"
4. Graceful degradation
При недоступности API бонусов:
- Проводите операцию без бонусов
- Сохраняйте данные для повторной обработки
- Информируйте пользователя о временной недоступности