Перейти к содержанию

Обработка ошибок и рекомендации

Руководство по обработке ошибок при интеграции с 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 бонусов: - Проводите операцию без бонусов - Сохраняйте данные для повторной обработки - Информируйте пользователя о временной недоступности