Коды ошибок v1
Платежный сервис возвращает как свои собственные ошибки, так и ошибки Банков.
При этом формат ответа с ошибкой одинаков — это поля errorCode и errorMessage.
Например:
{
"errorCode": "8",
"errorMessage": "Card data is incorrect"
}Критерием определения принадлежности ошибки (Платежный сервис или Банк) является код ошибки errorCode:
- значения больше 90 или буквенно-цифровой код формата АА-000 — ошибки Платежного сервиса;
- значения меньше 90 — ошибки Банка.
Значение errorCode=0 говорит о том, что выполнение операции прошло без технических ошибок (сбоев)
и в Платежном сервисе, и в Банке. Однако, это не гарантирует того, что операция в банке выполнена успешно.
Процессинг банка во многих случаях возвращает свой собственный код исполнения операции, значение которого включается в ответ Платежного сервиса в параметре actionCode и может говорить о том, что запрошенная операция не выполнена процессингом банка, даже если errorCode=0.
Коды ответов процессингового центра (actionCode) см. здесь.
Ошибки Платежного сервиса. Код ошибки — число
| HTTP code | Error code | Error message | Описание |
|---|---|---|---|
| 400 | 94 | Order has been expired in Router at {@mdOrder_expiryDate} | Заказ истек в Платежном сервисе раньше, чем он был маршрутизирован в какой-либо банк |
| 400 | 95 | Order {@orderNumber} already exists in {@gw_id} but likely was created bypassing router. Payment declined by router. | После выбора банка во время маршрутизации заказа, Платежный сервис проверяет, что заказ с таким номером еще не существует в банке. Однако, банк сообщает, что такой заказ там уже есть. |
| 400 | 97 | You should request QR code first before calling this method | Попытка вызвать статус или отмену QR-кода до регистрации QR-кода |
| 400 | 97 | Order {@orderNumber} was already processed in {@gw_id} and cannot be payed again. Please check order status. | Заказ с указанным номером уже был маршрутизирован в указанный банк. Банк сообщил, что заказ имеет финальный статус. Платежный сервис не принимает повторную оплату заказа. |
| 400 | 97 | Order has been canceled | Заказ был явно отменен в Платежном сервисе (decline.do, actionCode 4005) |
| 400 | 97 | Order {@orderNumber} is currently being processed | Платежный сервис начал оплату указанного заказа в конкретный банк, но данная операция еще не завершилась. Повторные оплаты и некоторые другие операции с этим заказом заблокированы в Платежном сервисе до окончания обработки этого заказа в банке. |
| 400 | 98 | Order identification is not provided |
orderNumber или mdOrder (orderId) отсутствуют в запросе |
| 400 | 98 | Order not found | Заказ с указанным номером (идентификатором) не найден |
| 400 | 98 | Binding not found in ${gw_arr}. Check bindingId and clientId |
bindingId из запроса не был найден в банках (список опрошенных банков) |
| 400 | 98 | Initial recurrent payment (tii=RI) should have [recurringFrequency] and [recurringExpiry] additional json parameters | Некорректные доп. параметры заказа |
| 400 | 98 | clientId must be specified for initial recurrent payment | В данном запросе необходим clientId
|
| 400 | 98 | Initial installment payment (tii=II) should have [installments], [recurringFrequency] and [recurringExpiry] additional json parameters | Некорректные доп. параметры заказа |
| 400 | 98 | clientId must be specified for initial installment payment | В данном запросе необходим clientId
|
| 400 | 98 | Initial installment payment should also have both recurringFrequency and recurringExpiry parameters | Некорректные доп. параметры заказа |
| 400 | 98 | Both recurringFrequency and recurringExpiry should be specified for initial recurrent or installment payment | Некорректные доп. параметры заказа |
| 400 | 98 | clientId must be specified for initial recurrent or installment payment | В данном запросе необходим clientId
|
| 400 | 98 | clientId must be specified when using VERIFY feature | В данном запросе необходим clientId
|
| 400 | 98 | Order not found in {@gw_target_id} | После оплаты в указанный банк этот банк не смог вернуть статус заказа |
| 400 | 98 | Order {@orderNumber} already registered | Заказ с таким номером уже зарегистрирован в Платежном сервисе |
| 400 | 98 | At least one of the specified payment ways is not supported | При регистрации заказа в Платежном сервисе указан метод оплаты, который не поддерживается в Платежном сервисе (CARD, BINDING, SBP_C2B и т.п.) |
| 400 | 98 | clientId must be specified when using binding creator merchant | При работе под данным логином необходимо указывать clientId
|
| 400 | 98 | Additional parameters back2app and app2app are mutually exclusive | Некорректные доп. параметры заказа для Sberbank Online |
| 400 | 98 | Phone number must be specified when using back2app or app2app additional parameter | Некорректные доп. параметры заказа для Sberbank Online |
| 400 | 98 | Phone number does not match required pattern for SBOL payment. Valid formats: +79000000000, 89000000000 | Некорректные доп. параметры заказа для Sberbank Online |
| 400 | 98 | Additional parameter app.osType must be either ios or android | Некорректные доп. параметры заказа для Sberbank Online |
| 400 | 98 | Additional parameter app.deepLink has incorrect format | Некорректные доп. параметры заказа для Sberbank Online |
| 400 | 98 | Binding not found | Указанная связка не найдена |
| 400 | 98 | Incorrect seToken | Некорректное содержание seToken |
| 400 | 98 | Request template is not defined for ${routerRequest} | Внутренняя ошибка Платежного сервиса — проблема с парсингом входящего запроса |
| 400 | 98 | Request template ${msgType} for ${routerRequest} is not defined in protocol | Внутренняя ошибка Платежного сервиса — проблема с парсингом входящего запроса |
| 400 | 98 | ${field} does not match required pattern ${pattern} | Некорректное значение параметра в запросе |
| 400 | 98 | ${field} parameter must be an Array | Некорректное значение параметра в запросе |
| 400 | 98 | ${field} parameter must be an Object | Некорректное значение параметра в запросе |
| 400 | 98 | ${field} parameter must be a number | Некорректное значение параметра в запросе |
| 400 | 98 | ${field} exceeded max length ${maxLength} | Некорректное значение параметра в запросе |
| 400 | 98 | ${field} must be one of ${enumArray} | Некорректное значение параметра в запросе |
| 400 | 98 | ${field} is a required parameter | Некорректное значение параметра в запросе |
| 400 | 98 | Currency [$currency] is not allowed in any bank | Некорректное значение параметра в запросе |
| 401 | 90 | Authentication failed ({@gw_target_id}). Check login and password | Аутентификация в указанном банке завершилась неудачно |
| 403 | 93 | MirPay link is not available | Ссылка на MirPay не была получена от банка (некорректная конфигурация Партнера в банке) |
| 404 | - | - | Метод не существует |
| 415 | - | - | Некорректный content type для данного метода |
| 424 | 97 | Order {@orderNumber} was already processed in {@gw_id}. Error checking current order status. Operation declined. | Заказ с указанным номером уже был маршрутизирован в указанный банк, однако получить статус заказа в этом банке не удалось. Запрос в указанный банк передан не будет. |
| 424 | 99 | Error loading router settings | Некорректные системные настройки Платежного сервиса |
| 424 | 99 | System error | Внутренняя ошибка Платежного сервиса, связанная с разными причинами. Подробности необходимо запросить у технической поддержки |
| 424 | 99 | Unsupported payment way | Платежный сервис не смог определить способ оплаты (card, seToken, bindingId) |
| 424 | 99 | Authentication failed: no gateways available | Не удалось выполнить аутентификацию апи-пользователя: все банки неактивны |
| 424 | 99 | Failed to decrypt or read seToken | Ошибка дешифрации seToken |
| 424 | 99 | Error getting gateway parameters: {@gw_target_id} | Внутренняя ошибка Платежного сервиса - проблема с подключением к конкретному банку |
| 424 | 99 | Gateway settings for ${gw_target_id} not found | Внутренняя ошибка Платежного сервиса — проблема с подключением к конкретному банку |
| 424 | 99 | Gateway settings for ${gw_target_id} are incomplete | Внутренняя ошибка Платежного сервиса — проблема с подключением к конкретному банку |
| 424 | 99 | Unable to load merchant settings | Внутренняя ошибка Платежного сервиса — проблема с настройками Партнера |
| 424 | 99 | Error loading merchant settings. Check router settings are valid and assigned to the merchant | Внутренняя ошибка Платежного сервиса — проблема с настройками Партнера |
| 424 | 99 | Internal error checking hessian response for success: {@service_name} | Внутренняя ошибка Платежного сервиса — проблема с парсингом ответа банка |
| 424 | 99 | Failed to parse incoming request or {@api_pathAndMethod}. Check JSON syntax in request body. | Некорректный JSON в запросе |
| 424 | 99 | Response template is not defined for ${routerRequest} | Внутренняя ошибка Платежного сервиса — проблема с подготовкой ответа Платежного сервиса |
| 424 | 99 | Response template ${msgType} for ${routerRequest} is not defined in protocol | Внутренняя ошибка Платежного сервиса — проблема с подготовкой ответа Платежного сервиса |
| 424 | 99 | Mirpay gateway is not specified for merchant {@merchant_name} | Некорректная конфигурация Партнера в Платежном сервисе |
| 424 | - | - | Внутренняя необработанная (непредсказуемая) ошибка Платежного сервиса |
| 424 | 99 | Payment failed | Не удалось выполнить оплату |
| 424 | 99 | There was problem processing order in {@gw_id} | При вызове instantPayment в банк произошла ошибка |
| 424 | 99 | Hessian response was unsuccessful | Внутренняя ошибка Платежного сервиса — проблема с парсингом ответа банка |
| 424 | 99 | Call to bank's gateway service ${context.gw_host:${service} was unsuccessful. Response HTTP code: ${httpCode}, response conent type: ${contentType}, error message: none | Внутренняя ошибка Платежного сервиса — проблема с парсингом ответа банка |
| 424 | 99 | Currency conversion failed | Ошибка при взаимодействии с сервисом конвертации валют |
| 424 | 99 | Target gateway is inactive and no alternate gateways available | Выбранный банк в данный момент неактивен (отключен), и для Партнера не осталось ни одного другого активного банка, способного принять оплату заказа. |
| 424 | 99 | Call to service $value returned empty body | Внутренняя ошибка Платежного сервиса — проблема с парсингом ответа стороннего сервиса |
| 424 | 99 | Binding data not received from gateway {@binding_gw_id} | Платежный сервис определил принадлежность связки конкретному банку, но банк не вернул данные по связке |
| 424 | 91 | Timeout when requesting {@service_name} | Таймаут на Платежном сервисе при запросе в определенный банк |
Ошибки Платежного сервиса. Буквенно-цифровой код ошибки
Точный текст ошибки не приводится, поскольку может быть изменен без предварительного уведомления. Для анализа следует использовать код ошибки — он уникален для каждой причины.
Буквенный код обозначает тип ошибки.
BD — ошибки связок
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 200 | BD-102 | В ответе на запрос getBindings.do список связок может быть неполным, так как возникли ошибки при получении связок как минимум из одного банка |
Временно недоступен сервис связок в одном или нескольких банках |
| 200 | BD-103 | В ответе на запрос getBindings.do поля bankName и paymentSystem могут быть пустыми или содержать некорректное значение, так как соответствующий сервис не вернул данных по картам. |
Временно недоступен сервис данных по картам |
| 200 | BD-104 | При сборе списка связок возникли ошибки BD-102 и BD-103, т.е. и список связок может быть неполным, и поля могут быть некорректны | Временно недоступен сервис связок в одном или нескольких банках и одновременно недоступен сервис данных по картам |
| 400 | BD-201 | СБП связка (подписка) не найдена по переданному bindingId (деактивация СБП подписки). |
|
PM — ошибки в процессе оплаты заказа
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 400 | PM-102 | Для указанных параметров платежа (сумма, карта, способ оплаты и т.д.) запрещено выполнять оплату | В настройках маршрутизации имеется правило, запрещающие принимать оплату с такими параметрами |
RO — ошибки при маршрутизации
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 424 | RO-201 | Вызываемый API-метод Платежного сервиса подразумевает, что заказ уже должен быть в каком-либо Банке, однако заказ еще не поступил ни в один Банк | Попытка возврата или отмены по заказу, который не ушел ни в один Банк |
| 424 | RO-202 | Не удалось зарегистрировать заказ в банке, доступном для данного способа оплаты, и нет альтернатив. |
|
| 424 | RO-204 | Нет доступных (активных) Банков для маршрутизации СБП оплат |
|
| 424 | RO-205 | Адрес BNPL модуля не задан для банка, через который осуществляется BNPL оплата | Ошибка конфигурирования банка в Платежном сервисе: не указаны параметры обращения к BNPL модулю. |
VP — ошибки, связанные с vendor pays
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 424 | VP-201 | Ошибка T-Pay - не удалось зарегистрировать заказ для оплаты по T-Pay | Недоступность сервисов Банка |
| 424 | VP-202 | Ошибка T-Pay - не удалось получить ссылку на QR код | Недоступность сервисов Банка |
| 424 | VP-203 | Ошибка T-Pay - не удалось отменить QR код | Недоступность сервисов Банка |
| 424 | VP-211 | Ошибка Yandeх PayBox - не удалось зарегистрировать заказ для оплаты по Yandex PayBox | Недоступность сервисов Банка |
| 424 | VP-212 | Ошибка Yandeх PayBox - не удалось получить платежную ссылку | Недоступность сервисов Банка |
VR — ошибки валидации входящих запросов
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 400 | VR-230 | Некорректные данные в поле orderBundle.orderCreationDate
|
Неверный формат даты или дата в будущем |
| 400 | VR-231 | Некорректные данные в блоке orderBundle.customerDetails
|
Одно или несколько обязательных полей в блоке customerDetails отсутствует или заполнено неверно |
| 400 | VR-232 | Некорректные данные в блоке orderBundle.customerDetails.deliveryInfo
|
Одно или несколько обязательных полей в блоке customerDetails.deliveryInfo отсутствует или заполнено неверно |
| 400 | VR-233 | Некорректные данные в блоке orderBundle.cartItems.items
|
Одно или несколько обязательных полей в блоке orderBundle.cartItems.items отсутствует или заполнено неверно |
| 400 | VR-234 |
itemAmount должно быть равно произведению itemPrice на количество |
Значение itemAmount не совпадает с произведением itemPrice x quantity
|
| 400 | VR-235 | Сумма заказа должна быть равна сумме стоимости всех позиций | Стоимость всех позиций заказа не совпадает с суммой заказа |
| 400 | VR-236 | Некорректные данные в orderBundle.cartItems.items.itemAttributes
|
Одно или несколько обязательных полей в блоке orderBundle.cartItems.items.itemAttributes отсутствует или заполнено неверно |
| 400 | VR-243 | Связка, указанная при регистрации заказа, не найдена | При регистрации заказа указан параметр bindingId или defaultBindingId, но данные по этой связке получить не удалось. |
| 400 | VR-244 | Ошибка валидации связки, указанной при регистрации заказа | При регистрации заказа указаны оба параметра bindingId и defaultBindingId. Необходимо указать что-то одно. |
| 400 | VR-245 | Некорректный тип связки при оплате заказа | Попытка использовать при оплате eCom-заказа рекуррентную связку или связку для рассрочки |
| 400 | VR-260 | Параметр запроса clientId не указан, но является обязательным в данном случае |
clientId может стать обязательным параметром в некоторых случаях, например: - В запросе регистрации указан идентификатор связки. - Другие параметры запроса указывают, что необходимо будет создать связку. Например, если указано "feature": ["VERIFY"] или выполняется регистрация инициирующего рекуррентного платежа. |
| 400 | VR-306 | Заказ с таким номером уже обработан | Попытка выполнить повторный вызов instantPayment.do с тем же самым номером заказа orderNumber или instantPayment.do c номером заказа, который был ранее зарегистрирован в Платежном сервисе |
| 400 | VR-307 | Заказ с таким номером уже обработан | Попытка выполнить повторный recurrentPayment.do с тем же самым номером заказа или recurrentPayment.do c номером заказа, который был ранее зарегистрирован в Платежном сервисе |
| 400 | VR-351 | Ошибка проверки подписи запроса. Пустое тело запроса | Отсутствует тело запроса. В общем случае вместо этой ошибки возвращается код 99 Failed to parse incoming request
|
| 400 | VR-352 | Ошибка проверки подписи запроса. Пустой заголовок X-Hash | Отсутствует хэш тела запроса |
| 400 | VR-353 | Ошибка проверки подписи запроса. Неправильный хэш в заголовке X-Hash | Хэш запроса сгенерирован неправильно или передан в неверной кодировке. Передавайте хэш в кодировке base64. |
| 400 | VR-354 | Ошибка проверки подписи запроса. Пустой заголовок X-Signature | Отсутствует подпись запроса |
| 400 | VR-355 | Ошибка проверки подписи запроса. Неправильная подпись | Подпись запроса сформирована неверно |
| 424 | VR-356 | Ошибка проверки подписи запроса. Отсутствуют сертификаты для проверки подписи | У Партнера нет ни одного действующего сертификата для проверки подписи запроса |
| 400 | VR-357 | Ошибка проверки подписи запроса. Ошибка расшифровки подписи из формата Base64 | Подпись запроса передана в неверном формате |
| 400 | VR-601 | Перед выполнением платежной операции по заказу в конкретном банке Платежный сервис обнаружил, что в этом Банке уже есть заказ с таким же номером, но он был создан не через Платежный сервис. | Регистрация Партнером заказа с одним и тем же номером сначала напрямую в Банке (минуя Платежный сервис), затем в Платежном сервисе. После выбора целевого банка Платежный сервис проверяет, существует ли уже заказ с указанным orderNumber в этом банке. В норме его не должно быть. Если заказ найден, возникает ошибка. |