Помощь кассиру

Чек-лист интеграции

актуальная

Что проверить перед выпуском: требования к клиенту и минимальный план испытаний на демо-кассе.

Клиент

Только TCP

Если используете

План испытаний

Проверьте на демо-контуре. Для каждого случая сохраните входной JSON, id, последовательность статусов и итоговые реквизиты.

  1. Доступность HTTP и TCP.
  2. Наличная продажа, статус OK.
  3. Безналичная продажа на терминале: успех, отмена, отказ банка.
  4. Повтор того же id после искусственного таймаута.
  5. Смешанная оплата и проверка равенства сумм.
  6. Возврат по верному и по неизвестному fd_number, возврат на карту.
  7. Перезапуск приложения кассы между приёмом и статусом.
  8. Закрытая смена, открытие смены, закрытие после незавершённого документа.
  9. Неверный токен, недоступный порт, приложение в фоне.
  10. Два документа подряд и обрыв связи после отправки.

Рекомендуемая структура кода

Удобно сделать один интерфейс, а транспорт оставить сменным:

YaKassaClient
  submitReceipt(document) → Accepted(id)
  getReceiptStatus(id)    → ReceiptResult
  openShift() / closeShift()

Модели документа и обработчик статусов общие, транспорт HTTP или TCP подставляется. Очередь исходящих операций, защита от дублей по id, паузы между попытками и восстановление после перезапуска живут выше транспорта. Незавершённые id держите в постоянном хранилище: при запуске программы они должны восстанавливаться. Тогда переход с TCP на HTTP не меняет логику продажи.

Смотрите также