Антикражные ворота помогают автоматизировать проверку факта оплаты покупки покупателем.
Алгоритм работы:
- Покупатель завершает покупку на КСО, печатается чек с уникальным штрих-кодом.
- Касса отправляет этот код на специальный сервер.
- Сервер сохраняет код в некоторое хранилище.
- Покупатель при проходе через ворота сканирует штрих-код с чека.
- Ворота по HTTP протоколу обращаются к серверу.
- Сервер проверяет код, отвечает разрешением или запретом, отмечает код как использованный.
- Ворота получают ответ, пропускают или не пропускают покупателя.
Настройка на кассе
На кассе достаточно включить модуль и указать адрес сервера.
Наименование | Возможные значения | Описание |
---|---|---|
Файл /opt/sst-sco/conf/exitgate.ini , секция [ExitGate] , настройки плагина антикражных ворот | ||
enable |
| Включение модуля |
host | ip-адрес | Адрес сервера |
port | порт по умолчанию 8087 | Порт сервера |
timeout | целое положительное число по умолчанию 5000 | Таймаут ожидания ответа от сервера (в миллисекундах) |
mask | макроподстановка | Шаблон для формирования данных, отправляемых на сервер Если значение не задано, то используется уникальный идентификатор, генерируемый на кассе. |
[ExitGate] enable = true host = <ip-адрес сервера>
В интеграции Artix SCO в качестве штрих-кода для прохода через антикражные ворота можно использовать штрих-код чека продажи. В значение параметра mask
нужно передать фискальные данные для генерации штрих-кода:
[ExitGate] enable = true host = <ip-адрес сервера> mask = %(fiscalInfo.fnDate[yyyyMMddhhmm])%(fiscalInfo.fiscalSign[d])
В качестве макроподстановок допускается использование свойств объекта fiscalInfo
для разных ОФД:
ОФД | Значение макроподстановки | Тип значения | Описание | Пример | Пример QR-кода ОФД |
---|---|---|---|---|---|
KZ:
| fiscalSign | целое положительное число | Фискальный признак | %(fiscalInfo.fiscalSign[d]) | https://consumer.oofd.kz/?i=1710742993&f=000000000099&s=1.00&t=20230815T155040 |
serialnum | строка | Регистрационный номер ККТ | %(fiscalInfo.serialnum[s]) | ||
sum | вещественное число | Сумма чека | %(fiscalInfo.sum[.2f]) | ||
fnDate | дата и время | Дата закрытия чека |
| ||
BY: ПКС "Цифровые кассы" (cashboxservice) | fiscalSign | целое положительное число | Уникальный идентификатор | %(fiscalInfo.fiscalSign[d]) | Передается значение уникального идентификатора |
UZ: Программное обеспечение виртуальной кассы ARTIX (fiscaldriveapi) | fnNumber | строка | Номер фискального модуля | %(fiscalInfo.fnNumber[s]) | https://ofd.soliq.uz/check?t=UZ191211502346&r=5221&c=20230815153405&s=520414301255 |
fdNumber | целое положительное число | Порядковый номер документа | %(fiscalInfo.fdNumber[d]) | ||
fnDate | дата и время | Дата закрытия чека |
| ||
fiscalSign | целое положительное число | Фискальный признак | %(fiscalInfo.fiscalSign[d]) | ||
RU:
| fnDate | дата и время | Дата закрытия чека | %(fiscalInfo.fnDate[yyyyMMddhhmm]) | t=20230802T1819&s=3.00&fn=9999078902008644&i=758&fp=1013568547&n=1 |
sum | вещественное число | Сумма чека |
| ||
fnNumber | строка | Номер фискального накопителя | %(fiscalInfo.fnNumber[s]) | ||
fdNumber | целое положительное число | Порядковый номер документа | %(fiscalInfo.fdNumber[d]) | ||
fiscalSign | целое положительное число | Фискальный признак | %(fiscalInfo.fiscalSign[d]) |
В настройках сервера антикражных ворот параметру mask
необходимо задать регулярное выражение для проверки данных с QR-кода (столбец таблицы "Пример QR-кода ОФД") в соответствии с нужным ОФД.
Настройка сервера антикражных ворот
Журнал запросов к серверу ведется в основном логе сервера /opt/exitgate/logs/server.log
.
Настройки сервера антикражных ворот.
Наименование | Возможные значения | Описание |
---|---|---|
Файл /opt/exitgate/cfg/server.conf , секция [Server] , настройки сервера | ||
port | порт по умолчанию 8087 | Порт, который будет слушать сервер |
acceptPeriod | целое положительное число по умолчанию 0 | Период времени (в секундах) от первого открытия, в течение которого разрешается повторный проход. Если 0 или не задан, можно открыть только один раз |
expiredAfter | целое положительное число по умолчанию 0 | Период времени (в секундах) с момента печати чека, после которого штрих-код считается просроченным. Если 0 или не задан, то до удаления из БД |
mask | регулярное выражение | Регулярное выражение для проверки данных со штрих-кода. ^t=(\d{8})T(\d{4})&s=\d+\.\d{2}&fn=\d+&i=\d+&fp=(\d+)&n=\d+$
Цели для проверки выделяются с помощью скобок В проверке будет участвовать числовая последовательность "Дата, время и фискальный признак". Если значение не задано, то штрих-код с кассы проверяется полностью. |
Для применения настроек необходимо перезапустить сервис.
Настройки базы данных
Настройки базы данных задаются в конфигурационном файле /opt/exitgate/cfg/server.conf
в секции [DataBase]
.
Наименование | Возможные значения | Описание |
---|---|---|
Файл /opt/exitgate/cfg/server.conf , секция [DataBase] , настройки базы данных | ||
lifeTime | целое число по умолчанию 7 | Количество дней, которое код хранится в БД |
Список разрешенных штрих-кодов
Файл /opt/exitgate/cfg/allowedCodes.txt
содержит список штрих-кодов, которые могут использоваться персоналом магазина для открытия антикражных ворот.
Каждый новый штрих-код должен записываться в файл с новой строки.