Публичное пространство
Узбекистан ◾️ Программный фискализатор 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
TinyCore:
ps ax | grep pcscd
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:
Добавьте новое устройство в разделе Кассовое оборудование → Фискальный регистратор.
Выберите тип FiscalDriveService.
3. На кассе после выбора оборудования Укажите FactoryID вашего фискального модуля в настройках оборудования.
Пример работы
Регистрация продажи
Формируется JSON-объект чека со всеми обязательными полями (позиции, налоги, суммы оплаты).
Выполняется запрос GetTXID для записи чека в базу данных службы.
Выполняется запрос RegisterTXID, используя полученный идентификатор транзакции, для окончательной фискализации.
Сохраняются полученные реквизиты (
FiscalSign,QRCodeURL) для печати на чеке.
Регистрация возврата
Выполняется поиск реквизитов исходного чека в базе данных кассы.
Формируется чек возврата, обязательно заполнив блок
RefundInfoданными оригинала.Повторяется двухшаговый процесс регистрации (GetTXID → RegisterTXID).
Закрытие смены и отправка в ОФД
Выполняется закрытие смены через запрос
POST /FiscalDrive/ZReport/Close/{FactoryID}.Происходит инициирование отправки данных в ОФД, последовательно выполния команды синхронизации для чеков (
Sync/FullReceipts) и Z-отчетов (Sync/ZReports).