Скип на основной контент

Ошибка ссылка

Все API Ошибки возвращают JSON Тело с Анной errors массивКаждый элемент несет a detail строка и, на некоторых конечных точках, машиночитаемый codeВалидация Неудачи перечисляют один элемент на поле.

Нормативное определение является §10 Спецификация протокола.


Ошибка, которая приходит как успех​

Маршрутизация, лимиты и борьба с мошенничеством не отказывают в оплате HTTP Они создают ошибку. Транзакция и маркировка rejectedТаким образом, ответ является 201 Created С совершенно обычным Тело:

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "rejected",
"error_description": "terminal not found"
}

Код, который проверяет только код статуса, записывает неоплаченные заказы как оплаченные. Читать далее status на всех Ответ. rejected и failed - не переводить деньги; charged Это единственный урегулированный результат.


Формат ответа на ошибку​

{
"errors": [
{ "code": "flow_not_continuable", "detail": "status_poll" }
]
}

Несколько конечных точек, предшествовавших этому формату ответа с '{"ошибка": "...", "сообщение": Вместо этого примите обе формы.


HTTP коды состояния​

КодЗначениеОбщая причина
400Плохой запроснесовершенный JSONОтсутствие необходимых полей и, в некоторых конечных точках, отсутствие поля. x-organization-id заголовок
401несанкционированныйНедостающие или недействительные учетные данные

Ручка 400 и 401 Точно так же, когда они не несут указателей поля: оба означают, что запрос был Не аутентифицированы, и какой из них вы получите, зависит от конечной точки. | 403 | Запретный | Действительные учетные данные, но нет разрешения на этот ресурс | | 404 | Не найдено | Сделка или ресурс с данным ID не существует | | 409 | конфликт | Сделка не может быть изменена в соответствии с запросом из ее текущего состояния. | | 422 | Необработанная организация | Проверка не удалась — один errors Элемент на поле | | 429 | Слишком много запросов | Превышенный лимит ставок | | 500 | Ошибка внутреннего сервера | Ошибка платформы — контактная поддержка транзакций ID |


Коды ошибок транзакций​

Они появляются в error_description в пределах полезных нагрузок webhook и ответов на статус транзакции:

КодЗначениеРекомендуемые действия
insufficient_fundsКарта сократилась: недостаточно средствПопросите плательщика использовать другую карту.
card_declinedКарта отклоняется эмитентомПопросите плательщика связаться с банком
expired_cardДата истечения срока действия карты прошлаПопросите плательщика обновить данные карты
invalid_card_numberНомер карты является недействительнымФормат номера контрольной карточки
invalid_cvvCVV является неправильнымПопросите плательщика вернуться CVV
do_not_honourОбщий упадок банковПопросите плательщика связаться с банком
lost_cardКарта потерянаНе повторяйте
stolen_cardКарта была украденаНе повторяйте
restricted_cardКарта не может быть использована для этой транзакции.Попросите плательщика использовать другую карту.
transaction_limit_exceededСумма превышает лимиты по карте/счетуПопросите плательщика использовать другой способ оплаты.
3ds_failed3D-безопасная аутентификация провалиласьПопросите плательщика повторно использовать или использовать другую карту
3ds_timeout3D-безопасное времяПовторите транзакцию
provider_unavailableПоставщик платежей временно недоступенВозвращение после задержки
routing_failedПоставщика для этой сделки не нашлиСвяжитесь с оператором платформы
duplicate_txidtxid Уже существует этот терминал.Используйте уникальный txid за транзакцию
currency_not_supportedВалюта, не поддерживаемая этим терминаломПроверьте конфигурацию терминала
amount_too_lowРазмер ниже минимального для данного провайдераУвеличение суммы сделки
amount_too_highМаксимальная сумма для данного провайдераРасщепление на более мелкие транзакции
antifraud_rejectБлокировка по правилам борьбы с мошенничествомСвяжитесь с оператором платформы

Ошибки проверки ()422)​

Ошибки проверки список один errors Каждый элемент проблемы, каждый с detail строка, обозначающая поле:

{
"errors": [
{ "detail": "amount: can't be blank" },
{ "detail": "currency: is invalid" }
]
}

Обработка ошибок в вашем коде​

Стратегия повторного использования​

Тип ошибкиПовторить?Заметки
provider_unavailable► ДаПодожди. 30–60 секунды, максимум 3 повторные попытки
3ds_timeout► ДаПовторите один раз сразу
insufficient_funds❌ NoПоказать альтернативный способ оплаты
card_declined❌ NoПоказать альтернативный способ оплаты
lost_card, stolen_cardНикогдаНе повторять и не представлять повторно
duplicate_txid❌ NoСоздайте новый уникальный txid
routing_failed❌ NoСвяжитесь с оператором платформы

Пример обработки ошибок (Python)​

import requests

response = requests.post(
'https://4pay.online/api/v1/transactions',
headers={
'x-api-key': 'YOUR_API_KEY',
'x-organization-id': '00000000-1111-2222-3333-444444444444',
'Content-Type': 'application/json',
},
json={'params': {'type': 'payment', 'amount': '1000', 'currency': 'USD',
'txid': 'order-1', 'env': 'prod'}}
)

if response.status_code == 422:
for err in response.json().get('errors', []):
print(err.get('detail'))
elif response.status_code == 409:
print("The transaction cannot move as requested from its current state")
elif response.status_code >= 500:
print("Platform error — retry later or contact support")
else:
tx = response.json()
print(f"Transaction created: {tx['id']}")

Контактная поддержка​

Постоянные ошибки или неожиданные 500 Ответы, контакты:

  • Электронная почта: помощница4pay.online
  • Включите сделку id (UUID) для более быстрой диагностики