API ReferenceMerchant API
Коды ошибок
Обработка ошибок, форматы ответов при сбоях и справочник кодов ошибок в Syncra Merchant API V2
Обработка ошибок в API
При обработке запросов, содержащих невалидные параметры, некорректную подпись или выполняемых при нехватке средств на балансе, Syncra Merchant API V2 возвращает ошибку с соответствующим HTTP-кодом состояния и телом ответа в формате JSON.
Формат тела ошибки (Error Shape)
Все ошибки возвращаются в едином стандартизированном JSON-формате, описывающем саму ошибку и детализирующем её причины:
{
"error": {
"code": "INVALID_ARGUMENT",
"message": "The request body failed to pass validation checks.",
"details": [
{
"field": "amount",
"description": "Amount must be a positive integer representing value in smallest currency units."
}
]
}
}Структура ответа
code(строка): Строковый код ошибки для программной обработки вашей системой (String Enum).message(строка): Понятное человеку описание причины ошибки на английском или русском языке.details(массив): Дополнительный список объектов, указывающих на конкретные невалидные поля (актуально для ошибок валидацииINVALID_ARGUMENT).
Справочник кодов ошибок
API V2 транслирует gRPC коды состояния бэкенда в стандартные HTTP коды и специфические внутренние коды ошибок:
| HTTP Код | Внутренний код (code) | Описание ошибки |
|---|---|---|
| 400 | INVALID_ARGUMENT | Ошибка валидации параметров запроса (неверный формат суммы, отсутствуют обязательные поля). |
| 400 | INSUFFICIENT_BALANCE | Недостаточно средств на кошельке мерчанта для проведения выплаты или вывода. |
| 401 | UNAUTHENTICATED | Неверный токен доступа, истекло время запроса или не совпала HMAC подпись. |
| 403 | MERCHANT_DISABLED | Аккаунт мерчанта заблокирован или включена функция экстренной блокировки (Kill-Switch). |
| 404 | NOT_FOUND | Запрошенный ресурс (сделка, кошелек, диспут) не найден в базе данных. |
| 409 | ALREADY_EXISTS | Запрос с указанным idempotency_key уже обрабатывался в системе с другими параметрами. |
| 429 | RATE_LIMIT_EXCEEDED | Превышен лимит частоты отправки запросов для вашего токена мерчанта. |
| 500 | INTERNAL_ERROR | Непредвиденный внутренний сбой на стороне платежного шлюза. Повторите попытку позже. |
Ошибки аутентификации (UNAUTHENTICATED)
Причинами возврата HTTP-статуса 401 могут быть:
- Отсутствие обязательных заголовков: В запросе не переданы заголовки
X-Merchant-Token,X-SignatureилиX-Timestamp. - Истечение времени (Replay Attack Protection): Время, переданное в
X-Timestamp, отличается от времени на сервере шлюза более чем на 300 секунд (5 минут). Проверьте синхронизацию времени (NTP) на вашем сервере. - Несоответствие подписи: Результат хеширования HMAC-SHA256(timestamp.body, webhook_secret) на сервере не совпал с переданным в заголовке
X-Signature. Проверьте, правильный ли секрет подписи вы используете и не форматируется ли JSON-тело после вычисления подписи.
Ошибки валидации (INVALID_ARGUMENT)
Этот код возвращается, если параметры запроса не соответствуют бизнес-правилам шлюза. Примеры:
- Значение
amountотрицательное или равно нулю. - Значение
currencyпередано в неверном формате или не поддерживается. - Длина
idempotency_keyпревышает лимиты (макс. 128 символов) или содержит запрещенные символы. - Реквизиты в
target_requisiteсодержат невалидный формат (буквенные символы в номере карты, неверный формат телефона для СБП). - Передан некорректный адрес криптовалютного кошелька для вывода средств в USDT.