Модуль 12 · Блок C · ~3 часа · критический модуль (проходной балл 100%)
Диагностика: оплата, фискализация и закрытие заказа
Цель модуля: Дать безопасные модели поведения в сценариях, где ошибка стоит денег: зависшая оплата, отсутствующий чек, незакрытый заказ и рассинхрон статусов.
Результаты обучения — после модуля специалист сможет:
  • разделять этапы: оплата, фискализация, закрытие — и не решать одну проблему через другую;
  • устанавливать фактический статус транзакции до любых действий;
  • не допускать двойного списания и дублей заказов;
  • распознавать массовый инцидент и корректно его оформлять.

Урок 12.1. Три этапа, которые нельзя смешивать

ЭтапЧто означает сбойЧего делать нельзя
ОплатаДеньги не списаны или статус неясенПовторять оплату без установления статуса первой попытки
Фискализация / чекДеньги списаны, но фискальный этап не завершёнПовторять оплату из-за отсутствия чека
Закрытие заказаДеньги списаны, заказ не перешёл в закрытое состояниеПроводить повторную оплату или создавать новый заказ
Ключевая мысль модуля: Если деньги списались — проблема больше не является «неуспешной оплатой». Это проблема следующего этапа: фискализации или закрытия. Решать её через повторную оплату означает списать с гостя второй раз.

Урок 12.2. Оплата: POS, Kaspi и повторные попытки

СимптомЧто проверитьЧто делать
POS не получает суммуСтабильность iPad и терминала; связь между ними; сеть; настройки интеграции; зависший старый экран оплатыПроверить видимость терминала, сеть; перезапустить устройства, если статус предыдущей оплаты чистый; повторно передать сумму
POS не принимает оплатуВключён ли терминал и не завис ли; питание; сеть; передалась ли правильная сумма; нет ли зависшей предыдущей попыткиПовторять оплату только после проверки, что предыдущая попытка действительно не завершилась
Терминал завис во время оплатыЕсть ли признаки, что платёж ушёл в обработку; подтверждение банка или системы; запись о транзакции; завис только экран или сам сценарийУточнить статус, не повторять автоматически. Если транзакция не проходила — безопасно завершить зависший сценарий
Сумма на POS не совпадает с заказомИтоговую сумму на iPad; состав корзины; комбо и модификаторы; не менялся ли заказ перед оплатой; не завис ли терминал со старой суммойПрервать оплату. Запускать повторно только после устранения расхождения
Оплата по QR / Kaspi не проходитСовпадение суммы; не обрывался ли интернет; не зависла ли система после предыдущей попытки; нет ли частично проведённой транзакции; текст ошибки платёжного сервисаПроверить фактический статус. Если статус чистый — повторить. Если неясен — сначала выяснить
QR / Kaspi настроен некорректноАктивирован ли нужный способ оплаты для точки; правильная ли конфигурация Киоска; настройки платёжного сценария; доступность оплаты для этой точки и режимаСверить настройки, перезапустить приложение после изменений, провести тестовый сценарий
Главное правило повторной оплаты: Если статус первой транзакции неясен — повторная оплата запрещена до выяснения. Проверяется: что показывает терминал, есть ли запись в системе, было ли фактическое списание, есть ли подтверждение банка, не завис ли заказ между этапами.
Система предлагает оплатить снова, хотя оплата прошла

Это рассинхрон статусов, а не повод к новой оплате. Ориентироваться нужно не на экран, а на фактический статус транзакции и заказа. Не повторять оплату, подтвердить фактический статус и разбирать проблему статусов.

Урок 12.3. Фискализация и чек

СимптомЛогика разбора
После оплаты не вышел чекСначала подтвердить факт оплаты, затем отдельно проверить печать и фискальный контур: работает ли устройство печати; доходит ли система до этапа печати; нет ли ошибки кассы или фискализации
Непонятно, должен ли был выйти чекПроверить тип оплаты и сценарий точки: должен ли чек печататься автоматически; есть ли подтверждение оплаты; есть ли запись о фискализации; на каком этапе оборвался процесс
В iiko есть оплата, но нет фискализацииСчитать платёж фактически совершённым. Не терять оплаченный заказ. Отдельно диагностировать фискальную часть и восстанавливать фискальный сценарий
Заказ не фискализируетсяПроверить интернет, доступность фискального сервиса, статус фискализации в iiko, кассовую конфигурацию, массовость проблемы
Проблема с webkassa / фискальным сервисомСохранить точный текст ошибки и время; проверить, повторяется ли на других точках; при массовой проблеме эскалировать как внешний сбой, при локальной — проверять кассовую конфигурацию и подключение
Ошибки кассы
ОшибкаРазбор
CashRegisterOperationFailedПроверить тип оплаты, режим кассы, связь с интернетом, работу фискального сервиса, нет ли уже завершённой оплаты. Если оплата прошла — не повторять её автоматически, устранять кассовую ошибку отдельно
Не настроена кассовая интеграция / нет обязательного ключаПроверить обязательные ключи и параметры, привязку точки, пропущенные настройки интеграции. Дозаполнить, перезапустить сценарий, провести тестовую оплату
Не создан тип оплаты, стол или режим кассыДонастроить недостающие сущности, проверить конфигурацию точки, повторить оплату только после исправления

Урок 12.4. Закрытие заказа и рассинхрон статусов

СимптомЧто делать
Заказ не закрылся после оплатыПодтвердить факт оплаты, проверить фактический статус заказа в iiko, не запускать повторное закрытие автоматически, понять, где произошёл разрыв: после оплаты, при подтверждении POS или при финализации в iiko
Оплата прошла, заказ остался открытымЗафиксировать, что платёж прошёл. Не повторять оплату. Проверить историю статусов и, если логика точки требует, перевести заказ в корректный конечный статус по служебному процессу
Заказ закрылся не полностью или некорректноСопоставить все фактические статусы, определить незавершённый этап, довести заказ до корректного состояния по служебному сценарию, зафиксировать рассинхрон
Order closure errorНе повторять закрытие автоматически. Проверить, есть ли оплата, статус в iiko, чек и фискализацию, подтверждение платёжного контура, не был ли заказ уже закрыт частично. Восстанавливать статус от реального состояния
Заказ завис в промежуточном статусеПроверить цепочку статусов, найти место разрыва, не создавать повторный сценарий закрытия как новый, восстановить статус от фактического состояния
Заказ уже закрыт, но система пытается закрыть повторноПодтвердить фактический статус, не запускать повторное закрытие, определить источник рассинхрона
Киоск показывает открытый заказ, а в iiko он закрытИсточник истины — iiko. Не повторять закрытие. Обновить фронт или перезапустить Киоск, если это безопасно
Статусы фронта и системы не совпадаютВзять фактический статус из системы как основной ориентир, локализовать, где потерялся или не обновился статус, исправить через корректный сценарий
Массовый инцидент

Если после оплаты массово не закрываются заказы — это уже не одиночный кейс. Порядок действий:

  1. Зафиксировать время начала массового сбоя.
  2. Собрать несколько примеров заказов.
  3. Не допускать хаотичных повторных закрытий и повторных оплат.
  4. Перевести ситуацию в режим системного инцидента.
  5. Передать на техническую эскалацию как массовую проблему финализации.
Тестовые и зависшие заказы
Осторожно: Главная ошибка — принять реальный зависший заказ за тестовый и удалить его. Проверяйте время создания, сумму, совпадение с моментом тестового запуска, наличие оплаты и следы реального клиентского сценария. При малейшем сомнении разбирайте заказ как клиентский инцидент.

Практическое задание

  1. Составьте личную памятку «три этапа и три запрета» и держите её на выездах.
  2. Кейс: гость оплатил 6 800 ₸, деньги списались, заказ остался открытым, администратор просит «пробить заново». Напишите развёрнутый ответ администратору и план ваших действий.
  3. Кейс: на трёх точках подряд заказы зависают после оплаты. Опишите, по каким признакам вы классифицируете это как массовый инцидент и что передадите технической команде.
Критерий прохождения: Тест 100% (число попыток не ограничено) + зачтены все три практических задания.
Тест: вопросы этого модуля загружаются в Moodle отдельно, из банка вопросов (категория «Модуль 12»).