Перейти к содержимому

Обработка ошибок и таймаутов

Gateway Connect разделяет системные ошибки (сервер провайдера недоступен, таймаут) и бизнес-отказы (банк отклонил карту, недостаточно средств).

Важное правило: Gateway всегда возвращает HTTP 200, даже если транзакция отклонена. Статус транзакции определяется содержимым JSON-ответа, а не HTTP-кодом.


Сценарий 1: Системная ошибка (провайдер вернул HTTP 4xx / 5xx)

Заголовок раздела «Сценарий 1: Системная ошибка (провайдер вернул HTTP 4xx / 5xx)»

Если провайдер недоступен или вернул ошибку, Gateway логирует её в logs и возвращает HTTP 200 с result: false:

{
"result": false,
"error": "Provider returned HTTP 502 – Bad Gateway",
"logs": [...]
}

Транзакция остаётся в статусе «в обработке». Окончательный статус будет получен позже через POST /callback или POST /status.


Таймаут запроса к провайдеру: 15 секунд по умолчанию.

Настраивается индивидуально для каждого метода в gateway_settings.methods.<method>.response_timeout (см. Настройки и Статусы).

При превышении таймаута Gateway возвращает HTTP 200 с result: false и code: 408.


Business Service определяет отказ, если в ответе Gateway обнаружено любое из трёх условий:

  1. result: false
  2. status: "declined"
  3. Наличие ключа error в корне ответа

Business Service извлекает текст причины из одного из полей ответа в следующем порядке:

  1. declination_reason
  2. details
  3. reason
  4. error

Сообщение сохраняется с префиксом gateway response error:.

Пример бизнес-отказа (банк отклонил):

{
"result": true,
"status": "declined",
"details": "Insufficient funds",
"logs": [...]
}

Пример системного отказа (ошибка в Gateway):

{
"result": false,
"error": "Card token validation failed inside gateway",
"logs": [...]
}