Коды ошибок Платежного сервиса
Формат сообщений об ошибках
Платежный сервис возвращает как свои собственные ошибки, так и ошибки банков.
При этом формат ответа с ошибкой одинаков — это поля errorCode и errorMessage.
Например:
{
"errorCode": "8",
"errorMessage": "Card data is incorrect"
}Критерием определения принадлежности ошибки (Платежный сервис или банк) является код ошибки errorCode:
- Буквенно-цифровой код формата АА-000 — ошибки Платежного сервиса.
- Значения в другом формате — ошибки платежного шлюза конкретного банка. Платежный сервис транслирует коды ошибок от платежного шлюза банка Партнеру без изменения. Формат значений при этом зависит от конкретного банка.
Значение errorCode=0 говорит о том, что выполнение операции прошло без технических ошибок (сбоев)
и в Платежном сервисе, и в банке. Однако, это не гарантирует того, что операция в банке выполнена успешно.
Процессинг банка во многих случаях возвращает свой собственный код исполнения операции, значение которого включается в ответ Платежного сервиса в параметре actionCode и может говорить о том, что запрошенная операция не выполнена процессингом банка, даже если errorCode=0.
Коды ответов процессингового центра (actionCode) см. здесь.
Ошибки Платежного сервиса
Точный текст ошибки не приводится, поскольку может быть изменен без предварительного уведомления. Для анализа следует использовать код ошибки — он уникален для каждой причины.
Буквенный код обозначает тип ошибки.
BD — ошибки связок
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 400 | BD-101 | Связка не найдена по известному bindingId (при оплате связкой, деактивации связки и т.п.). |
|
| 200 | BD-102 | В ответе на запрос getBindings.do список связок может быть неполным, так как возникли ошибки при получении связок как минимум из одного банка |
Временно недоступен сервис связок в одном или нескольких банках |
| 200 | BD-103 | В ответе на запрос getBindings.do поля bankName и paymentSystem могут быть пустыми или содержать некорректное значение, так как соответствующий сервис не вернул данных по картам. |
Временно недоступен сервис данных по картам |
| 200 | BD-104 | При сборе списка связок возникли ошибки BD-102 и BD-103, т.е. и список связок может быть неполным, и поля могут быть некорректны | Временно недоступен сервис связок в одном или нескольких банках и одновременно недоступен сервис данных по картам |
| 424 | BD-105 | Некорректный формат передачи идентификатора связки bindingId
|
В идентификаторе связки не указана принадлежность банку |
| 424 | BD-120 | Ошибка деактивации связки | При деактивации связки в банке, банк не вернул подтверждение успешного выполнения операции (timeout, failure и т.д.) |
| 424 | BD-201 | СБП связка (подписка) не найдена по переданному bindingId (деактивация СБП подписки). |
|
MD — ошибки получения данных по заказу
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 200 или 400 | MD-101 | Заказ не найден в Платежном сервисе. HTTP код 200 возвращается в ответе на запрос getOrderStatusExtended.do, в остальных случаях - 400 |
В запросе указан неверный orderNumber или mdOrder заказа |
| 424 | MD-102 | Заказ не найден в банке. Платежному сервису известен банк и идентификатор заказа в банке, но при запросе информации из банка банк сообщает, что такого заказа не существует | Ошибка в данных Платежного сервиса о местонахождении заказа |
| 424 | MD-103 | Не удалось получить статус заказа из банка |
|
| 400 | MD-105 | При выполнении операции с заказом (возврат, отмена) не указан идентификатор заказа | В запросе не указаны ни orderNumber ни mdOrder заказа |
| 424 | MD-202 | Заказ уже существует в банке, и был создан не Платежным сервисом. Оплата через Платежный сервис не допускается. | Заказ был создан напрямую в банке в обход Платежного сервиса |
| 424 | MD-204 | Ошибка получения данных о заказе из шлюза Платежного сервиса |
|
PM — ошибки в процессе оплаты заказа
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 424 | PM-101 | Не удалось определить способ оплаты (карта, связка, seToken и т.п.) | Ошибка в Платежном сервисе |
| 400 | PM-102 | Для указанных параметров платежа (сумма, карта, способ оплаты и т.д.) запрещено выполнять оплату | В настройках маршрутизации имеется правило, запрещающие принимать оплату с такими параметрами |
| 424 | PM-110 | Невозможно установить блокировку заказа перед началом оплаты | Ошибка при взаимодействии с БД Платежного сервиса |
| 424 | PM-111 | Невозможно снять блокировку с заказа после окончания оплаты | Ошибка при взаимодействии с БД Платежного сервиса |
| 424 | PM-112 | Заказ заблокирован другой операцией | Попытка выполнить операцию с заказом в то время, как заказ заблокирован другой операцией. |
| 424 | PM-121 | Оплата в банк (рассрочка или рекуррент) завершилась неудачей |
|
| 424 | PM-122 | Оплата в банк (instantPayment) завершилась неудачей |
|
| 424 | PM-131 | Не удалось конвертировать исходную валюту заказа в целевую для выбранного банка |
|
RC - ошибки взаимодействия с внешними сервисами
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 424 | RC-101 | Ответ от внешнего сервиса содержит ошибку в теле ответа, но без кода ошибка этого сервиса |
|
| 424 | RC-201 | Не удалось отправить запрос во внешний сервис |
|
| 424 | RC-202 | Таймаут при вызове внешнего сервиса | Ответ на запрос не получен в течение времени ожидания ответа |
| 424 | RC-203 | Неожиданный ответ внешнего сервиса | Тело ответа не является валидным JSON |
| 424 | RC-211 | Не удалось отправить запрос в платежный шлюз банка |
|
| 424 | RC-212 | Таймаут при вызове платежного шлюза банка | Ответ на запрос не получен в течение времени ожидания ответа |
| 424 | RC-213 | Неожиданный ответ платежного шлюза банка | Тело ответа не является валидным JSON |
| 424 | RC-221 | Не удалось отправить запрос в шлюз Платежного сервиса |
|
| 424 | RC-222 | Таймаут при вызове платежного шлюза Платежного сервиса | Ответ на запрос не получен в течение времени ожидания ответа |
| 424 | RC-223 | Неожиданный ответ платежного шлюза Платежного сервиса | Тело ответа не является валидным JSON |
| 424 | RC-231 | Не удалось отправить запрос в платежный шлюз банка |
|
| 424 | RC-232 | Таймаут при вызове платежного шлюза банка | Ответ на запрос не получен в течение времени ожидания ответа |
| 424 | RC-233 | Неожиданный ответ платежного шлюза банка | Тело ответа не является валидным JSON |
RO — ошибки при маршрутизации
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 424 | RO-101 | Недоступен сервис аутентификации мерчанта | Платежный сервис временно деактивировал все банки, доступные Партнеру (из-за сетевой недоступности, превышения порога ошибок и т.п.) |
| 400 | RO-201 | Вызываемый API-метод Платежного сервиса подразумевает, что заказ уже должен быть в каком-либо банке, однако заказ еще не поступил ни в один банк | Попытка возврата или отмены по заказу, который не ушел ни в один банк |
| 424 | RO-202 | Не удалось зарегистрировать заказ в банке, доступном для данного способа оплаты, и нет альтернатив. |
|
RT — внутренние ошибки во время исполнения
Ошибки с кодом RT-xxx являются внутренними системными ошибками Платежного сервиса (перехваченными исключениями, exceptions). Полный перечень не приводится.
- Текст всех ошибок RT-xxx: System error. Please contact support if the issue persists
- Причина таких ошибок как правило техническая, например, некорректная конфигурация, отсутствие необходимых конфигурационных данных, ошибки на уровне БД, и т.п.
ST - ошибки в конфигурации
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 424 | ST-101 | Ошибка получения настроек Платежного сервиса | Ошибка конфигурирования самого Платежного сервиса |
| 424 | ST-201 | Партнер не зарегистрирован в Платежном сервисе | Ошибка конфигурирования Партнера в Платежном сервисе |
| 424 | ST-203 | В настройках Партнера отсутствуют необходимые параметры | Ошибка конфигурирования Партнера в Платежном сервисе |
| 424 | ST-212 | Для модуля BNPL отсутствуют необходимые параметры | Ошибка конфигурирования самого Платежного сервиса |
| 424 | ST-301 | Ошибка получения настроек банка | Ошибка конфигурирования банка в Платежном сервисе |
| 424 | ST-401 | В настройках Партнера отсутствуют необходимые параметры | Ошибка конфигурирования Партнера в Платежном сервисе |
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 - не удалось получить платежную ссылку | Недоступность сервисов банка |
| 400 | VP-251 | QR-код (при оплате по СБП) еще не зарегистрирован | Попытка вызвать статус или отмену СБП QR-кода до того как он был зарегистрирован |
| 424 | VP-301 | Ошибка MirPay - ссылка не была получена от банка |
|
VR — ошибки валидации входящих запросов
| HTTP код | Код ошибки | Описание | Возможные причины |
|---|---|---|---|
| 400 | VR-101 | Ошибка аутентификации - неверный логин или пароль | Неверный логин или пароль |
| 400 | VR-102 | Не валидный JSON в теле запроса | Не валидный JSON в теле запроса |
| 400 | VR-110 | Заказ с таким номером уже зарегистрирован | Попытка повторной регистрации заказа с тем же самым orderNumber |
| 400 | VR-201 | При регистрации указан способ оплаты, который не поддерживается в Платежном сервисе | Неверное указание допустимых способов оплаты |
| 400 | VR-202 | Инициирующий рекуррентный платеж (с tii=RI) должен иметь доп. параметры recurringFrequency и recurringExpiry
|
Отсутствуют обязательные параметры запроса |
| 400 | VR-203 | Инициирующий рекуррентный платеж (с tii=RI) должен иметь непустой clientId
|
Отсутствуют обязательные параметры запроса |
| 400 | VR-204 | Инициирующая рассрочка (с tii=II) должна иметь доп. параметры installments, recurringFrequency и recurringExpiry
|
Отсутствуют обязательные параметры запроса |
| 400 | VR-205 | Инициирующая рассрочка (с tii=II) должна иметь непустой clientId
|
Отсутствуют обязательные параметры запроса |
| 400 | VR-206 | Оба параметра recurringFrequency и recurringExpiry необходимы в запросе |
Отсутствуют обязательные параметры запроса |
| 400 | VR-207 | Инициирующий рекуррентный платеж или рассрочка должен иметь непустой clientId (для случая когда tii не передавался явно) |
Отсутствуют обязательные параметры запроса |
| 400 | VR-208 | При использовании feature VERIFY необходимо указание clientId
|
Отсутствуют обязательные параметры запроса |
| 400 | VR-209 | {имя поля} является обязательным | Отсутствуют обязательные параметры запроса |
| 400 | VR-210 | Ошибки формальной валидации параметров запроса |
|
| 400 | VR-211 | При использовании мерчанта для привязки карт необходимо указание clientId
|
Отсутствуют обязательные параметры запроса |
| 400 | VR-212 | При использовании фичи FORCE_CREATE_BINDING необходимо указание clientId
|
Отсутствуют обязательные параметры запроса |
| 400 | VR-215 | В запросе указана валюта, недоступная Партнеру ни в одном банке |
|
| 400 | VR-221 | На момент выполнения запроса время жизни заказа уже истекло, операции над заказом не допускаются |
|
| 400 | VR-222 | Заказ был явно отменен, операции над заказом не допускаются | Попытка выполнить операцию над заказом в статусе DECLINED
|
| 400 | VR-223 | Заказ уже был обработан. Повторные запросы оплаты по этому заказу не принимаются | Попытка повторно оплатить уже оплаченный заказ |
| 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-242 | При регистрации заказа с bindingId указание clientId обязательно |
Отсутствуют обязательные параметры запроса |
| 400 | VR-244 | При регистрации заказа допускается указывать либо bindingId либо defaultBindingId, но не оба |
При регистрации заказа указаны оба параметра bindingId и defaultBindingId. Необходимо указать что-то одно. |
| 400 | VR-245 | Некорректный тип связки при оплате заказа. Эта связка не может использоваться для оплаты e-com заказа | При оплате e-com заказа используется recurrent или installment связка |
| 400 | VR-246 | Некорректный тип связки при оплате заказа. Эта связка не может использоваться для рекуррентной оплаты | При рекуррентной оплате используется не рекуррентная связка |
| 400 | VR-261 | Доп. параметры back2app and app2app не должны использоваться одновременно |
Некорректное значение переданных параметров |
| 400 | VR-264 | Недопустимое значение доп. параметра app.osType
|
Некорректное значение переданных параметров |
| 400 | VR-265 | Недопустимое значение доп. параметра app.deepLink
|
Некорректное значение переданных параметров |
| 400 | VR-271 | Недопустимое значение доп. параметра yandex_paymentWay
|
Некорректное значение переданных параметров |
| 400 | VR-275 | Целевой банк для оплаты указан некорректно |
|
| 400 | VR-306 | Заказ с таким номером уже обработан | Попытка выполнить повторный вызов instantPayment.do с тем же самым номером заказа orderNumber или instantPayment.do c номером заказа, который был ранее зарегистрирован в Платежном сервисе |
| 400 | VR-307 | Заказ с таким номером уже обработан | Попытка выполнить повторный recurrentPayment.do с тем же самым номером заказа или recurrentPayment.do c номером заказа, который был ранее зарегистрирован в Платежном сервисе |
| 424 | VR-330 | Отсутствуют активные ключи для дешифрации SeToken | Ошибка конфигурации Платежного сервиса |
| 400 | VR-331 | Ни один ключ в Платежном сервисе не смог дешифровать SeToken | Мерчант использует неверный ключ |
| 400 | VR-332 ... VR-337 | Ошибки валидации содержания seToken. Причина уточняется в тексте ошибки. | Содержимое токена некорректно. |
| 400 | VR-351 | Ошибка проверки подписи запроса. Пустое тело запроса | Отсутствует тело запроса. |
| 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-990 | Generic ошибка в запросе (без уточнения причины) | Конкретная ошибка еще не получила индивидуального кода |