Skip to main content

Обработка ошибок

Формат response_code

Все операции возвращают response_code в финальном ответе. Формат кода:

Диапазон / ФорматИсточникОписание
000Эквайер/терминалОперация выполнена успешно (Approved).
001–099Эквайер/терминалПредупреждения и специальные статусы эквайера.
100–999Эквайер/терминалОтказы эквайера (Declined). Подробности в response_desc.
DLL-***LP DriveВнутренние ошибки LP Drive (валидация параметров, логика, конфигурация).
NET-***ИнфраструктураСетевые и транспортные ошибки (соединение, таймауты, шлюз).
MSG-***LP DriveОшибки обработки протокольных сообщений.
ACK-***LP DriveОшибки подтверждения доставки.
TRX-***LP DriveОшибки уровня транзакций.
COM-***LP DriveОшибки COM-транспорта.
FLW-***LP DriveОшибки управления потоком сообщений.

Коды ошибок — транспортный уровень (NET-*)

КодОписаниеЧто делатьТранзакция
NET-001LP Drive не может подключиться к IKR (неверный IP/порт или IKR недоступен).Проверить запуск IKR и параметры tcp.host / tcp.port.Прерывается.
NET-002Потеря соединения во время обмена.LP Drive автоматически выполнит переподключение (если включено). Повторить операцию.Прерывается.
NET-003Ошибка при записи в TCP-сокет.Проверить сетевую доступность терминала.Прерывается.
NET-004Ошибка при чтении из TCP.Проверить соединение и перезапустить операцию.Прерывается.
NET-005Нет данных в течение kkm.gateway.read.timeout.Проверить связь с терминалом; увеличить таймаут при необходимости.Прерывается.
NET-010ККМ не может установить внешнее соединение.Проверить интернет-доступность ККМ.Прерывается.
NET-011Внешний хост не отвечает.Проверить доступность хоста эквайера.Прерывается.
NET-012Нет ответа в течение настроенного таймаута.Увеличить kkm.gateway.read.timeout или проверить канал.Прерывается.
NET-013Несовместимые параметры kkm.gateway.*.Исправить конфигурацию (kkm.gateway.mode должен быть корректным значением).Прерывается.
NET-014com_mux запрошен, но transport.mode = tcp.Использовать com_mux только с transport.mode = com.Прерывается.
NET-015Превышен queue.network.max. Пакет отброшен.Снизить частоту запросов или увеличить queue.network.max.Прерывается.
NET-016Не получено подтверждение доставки данных после исчерпания попыток повтора.Проверить IKR и канал. Не повторять транзакцию автоматически — дождаться переустановки соединения.Прерывается.
NET-017Переполнен буфер входящих данных по одному соединению.Снизить объём передаваемых данных или увеличить internet.receive.buffer.max.Прерывается.

Коды ошибок — уровень сообщений (MSG-*)

КодОписаниеТранзакция
MSG-001Невозможно выделить сообщение по разделителю.Игнорируется без ACK.
MSG-002Некорректное сообщение.Игнорируется без ACK.
MSG-003Отсутствует обязательное поле (message_type и др.).Прерывается.
MSG-004Неизвестный message_type.Прерывается.
MSG-006transaction_id не совпадает с активной транзакцией.Прерывается.
MSG-007Дубликат message_id (повтор).Игнорируется.
MSG-008Неверное значение transaction_type.Прерывается.
MSG-009Несоответствие типа или длины поля спецификации.Прерывается.

Коды ошибок — уровень ACK (ACK-*)

КодОписаниеТранзакция
ACK-001ACK не получен в течение ack.timeout.Прерывается.
ACK-002ACK не получен после ack.resend попыток.Прерывается.
ACK-003message_id в ACK не найден среди ожидаемых.Прерывается.
ACK-005LP Drive не отправила ACK (ошибка реализации).Прерывается.

Коды ошибок — уровень транзакций (TRX-*)

КодОписаниеТранзакция
TRX-001Параллельная транзакция: новый вызов при активной операции.Прерывается.
TRX-002Прерывание транзакции из-за потери соединения.Прерывается.
TRX-003Внутренняя ошибка IKR при выполнении операции.Прерывается.
TRX-004Повторная обработка: нарушение идемпотентности.Прерывается.
TRX-005Отмена по инициативе ККМ (получен cancel-запрос).Прерывается.

COM-порт (COM-*)

КодОписаниеЧто делатьТранзакция
COM-001Не удаётся открыть COM-порт (занят или отсутствует).Проверить com.port в конфигурации.Прерывается.
COM-002Невозможно применить настройки порта (baudrate, parity).Проверить параметры com.* в конфигурации.Прерывается.
COM-003Ошибка при отправке данных через COM.Проверить физическое подключение.Прерывается.
COM-004Ошибка при чтении из COM.Проверить физическое подключение.Прерывается.
COM-005Физическое отключение COM-соединения.Переподключить устройство.Прерывается.
COM-006Некорректный тип транспорта в конфигурации.Проверить transport.mode.Прерывается.

Коды ошибок — управление потоком (FLW-*)

КодОписаниеЧто делатьТранзакция
FLW-001Превышен лимит промежуточных статусов в очереди. IKR прекращает отправку статусов.Убедиться, что ПО ККМ своевременно читает статусы через callback или polling.Прерывается.
FLW-002ACK получен вне ожидаемого порядка.Проверить логи DLL на предмет нарушений последовательности.Игнорируется.

Рекомендации по обработке ошибок в ПО ККМ

  • Всегда проверяйте response_code в финальном ответе. Код 000 означает успех; любой другой — необходимость обработки отказа.
  • Используйте response_desc для информирования кассира — он уже содержит готовый текст.
  • NET- и DLL- коды являются инфраструктурными. Они не несут бизнес-результата операции и требуют технических действий: повтора, проверки соединения или конфигурации.
  • Для автоматического повтора транзакций реализуйте логику с ограниченным числом попыток и задержкой (exponential backoff).
  • При получении ошибок MSG-* проверьте корректность формата передаваемых параметров.
  • Логируйте response_code, response_desc и transaction_id для каждой операции — это упрощает диагностику.