Узбекистан ◾️ Программный фискализатор FiscalDriveService (бывший FiscalDriveAPI на FiscalDriveService)

Публичное пространство

Узбекистан ◾️ Программный фискализатор FiscalDriveService (бывший FiscalDriveAPI на FiscalDriveService)

https://crystals.atlassian.net/browse/HW-322

https://crystals.atlassian.net/browse/SRTG-512

https://crystals.atlassian.net/browse/SRTG-503

https://crystals.atlassian.net/browse/CR-15067

10.4.5.0

 

Описание

В связи с изменениями в законодательстве Узбекистана и переходом на новые фискальные модули (ФМ) версии 0400, программное обеспечение SetRetail10 переходит на использование службы FiscalDriveService.

Данное решение заменяет устаревший сервис FiscalDriveAPI. Основное назначение новой службы — обеспечение стабильного взаимодействия между кассовым ПО и фискальным модулем по современному REST-протоколу, поддержка расширенных типов чеков (аванс, кредит) и передача данных о социальных картах.

Служба FiscalDriveService представляет собой локальный REST-сервер, который выступает посредником между кассой и аппаратным ФМ.

Ключевые особенности протокола:

  • Транспорт: Взаимодействие осуществляется по протоколу HTTP/HTTPS через порт 3449 (вместо порта 3448 в старой версии).

  • Двухшаговая регистрация: Для повышения надежности регистрация чека разделена на два этапа: резервирование транзакции в базе данных (GetTXID) и последующая фискализация в модуле (RegisterTXID). Это исключает риск потери данных при обрыве связи.

  • Управление очередью ОФД: В отличие от старой службы, которая отправляла данные автоматически по таймеру, FiscalDriveService выполняет синхронизацию с ОФД по явной команде от кассового ПО.

  • Идентификация (FactoryID): Касса должна самостоятельно получать список доступных ФМ и хранить FactoryID выбранного модуля для использования во всех последующих запросах.

  • Безопасность (POS-защита): Поддерживается механизм привязки кассы к конкретному ФМ с помощью секретного ключа и авторизации каждого критичного запроса через заголовок X-POS-Auth.

Общие правила и ограничения

  • Версия ФМ: Поддерживается только апплет ФМ версии 0400.

  • Системное время: Разница между системными часами и реальным временем не должна превышать 2 дня, иначе ФМ заблокирует работу.

  • Миграция: Перед установкой новой службы необходимо убедиться, что в старом ФМ нет неотправленных чеков.

Настройка

Для настройки и запуска новой службы фискализации выполните следующие действия:

1. Убедитесь, что служба pcscd запущена.

Ubuntu:

systemctl status pcscd
image-20260608-112007.png

 

TinyCore:

ps ax | grep pcscd
image-20260608-112216.png

 

2. Дополнительные конфигурации выполните согласно инструкции поставщика fiscal-drive-service/README.md at master · qo0p/fiscal-drive-service

 

3. Запустите службу:

  • В Ubuntu: выполните команду sudo systemctl start ejtoken2.

  • В TinyCore: добавьте запись ejtoken2.tcz в файл /tce/onboot.lst.

 

4. Настройте оборудование на сервере SetCentrum/SetRetail10:

Добавьте новое устройство в разделе Кассовое оборудованиеФискальный регистратор.

image-20260608-114513.png

Выберите тип FiscalDriveService.

image-20260608-114657.png

 

3. На кассе после выбора оборудования Укажите FactoryID вашего фискального модуля в настройках оборудования.

 

Пример работы

Регистрация продажи

  1. Формируется JSON-объект чека со всеми обязательными полями (позиции, налоги, суммы оплаты).

  2. Выполняется запрос GetTXID для записи чека в базу данных службы.

  3. Выполняется запрос RegisterTXID, используя полученный идентификатор транзакции, для окончательной фискализации.

  4. Сохраняются полученные реквизиты (FiscalSign, QRCodeURL) для печати на чеке.

Регистрация возврата

  1. Выполняется поиск реквизитов исходного чека в базе данных кассы.

  2. Формируется чек возврата, обязательно заполнив блок RefundInfo данными оригинала.

  3. Повторяется двухшаговый процесс регистрации (GetTXID → RegisterTXID).

Закрытие смены и отправка в ОФД

  1. Выполняется закрытие смены через запрос POST /FiscalDrive/ZReport/Close/{FactoryID}.

  2. Происходит инициирование отправки данных в ОФД, последовательно выполния команды синхронизации для чеков (Sync/FullReceipts) и Z-отчетов (Sync/ZReports).