Skip to main content

Процесс выполнения операции

Общий сценарий

Взаимодействие ПО ККМ с LP Drive следует следующей последовательности:

  1. ПО ККМ вызывает метод нужной операции (например, lpdrive_sale).
  2. LP Drive валидирует входные параметры. При ошибке валидации транзакция не создаётся.
  3. Если transaction_id не передан — LP Drive генерирует UUID и использует его во всех последующих сообщениях.
  4. LP Drive запускает обработку операции.
  5. В процессе выполнения LP Drive передаёт промежуточные статусы через callback и/или помещает их в очередь polling.
  6. При необходимости выбора кассира LP Drive отправляет action_request. ПО ККМ отвечает вызовом lpdrive_send_choice().
  7. По завершении операции LP Drive сохраняет финальный ответ в объекте транзакции.
  8. ПО ККМ получает финальный ответ через lpdrive_get_status() при получении статуса LPDRIVE_STATUS_FINAL.

Модели получения статусов

LP Drive поддерживает два независимых механизма получения промежуточных статусов:

МеханизмОписаниеКогда использовать
CallbackLP Drive вызывает зарегистрированную функцию при появлении каждого статуса. Вызовы последовательны, без повторного входа.Когда нужна мгновенная реакция на статус из отдельного потока.
PollingПО ККМ периодически вызывает lpdrive_get_status() и получает последний известный статус. Если статуса нет — возвращается EMPTY.Когда архитектура ПО ККМ не предполагает callback или требует pull-модели.

Ограничения параллельности

  • Одновременно допускается только одна активная кассовая транзакция на экземпляр LP Drive.
  • Повторный вызов кассового метода при наличии активной транзакции будет отклонён с кодом занятости (LPDRIVE_STATUS_BUSY).
  • Служебные методы (lpdrive_get_status, lpdrive_cancel, lpdrive_send_choice) могут вызываться параллельно с активной транзакцией.