- Схема взаимодействия биллинга с кассовым аппаратом
- Операции с кассовым аппаратом
- Установка и настройка
- Установка tray_proxy
- Настройка tray_proxy и ККМ
- Настройки для ШТРИХ-М
- Настройки для ПИРИТ
- Настройка кассового аппарата АТОЛ
- Verifone vx820. Безналичная оплата с терминалов
- Настройка биллинга
- Решение проблем с TrayProxy
Схема взаимодействия биллинга с кассовым аппаратом
У кассира на рабочем компьютере должно быть запущено специальное приложение (tray_proxy). Биллинг, при авторизации кассира, запоминает его ip адрес и далее все команды для ККМ отправляются на этот ip адрес и обрабатывается приложением tray_proxy.
![]() | По умолчанию при печати чека для наличной оплаты биллинг отправляет команды на печать только 1 чека. В случае, если необходимо распечатать повторно тот же самый чек и отдать абоненту - используйте опцию Повторить последний документ на вкладке ККМ |
Операции с кассовым аппаратом
Доступны операции:
- Отчёт с гашением
- Отчёт без гашения
- Запустить ККМ
- Открыть смену
- Повтрорить последний документ
- Внесение средств - корректировка содержимого кассы, чтобы счетчик ККМ совпадал с фактическим количеством наличных денег в кассе, не добавляет средства на счёт абонента;
- Выемка средств - корректировка содержимого кассы, аналогично "Внесению средств";
- Проверка связи
- Получить ID терминала
- Закрыть день
Установка и настройка
Установка tray_proxy
Скачать приложение можно по ссылке: tray_proxy_v3.2.zip
![]() | Версия драйвера АТОЛ должна быть не ниже 10.10.6.0. |
tray_proxy под Windows (XP, 7, 10)
Для работы необходимо:
- Python 2.7 Сайт (прямая ссылка на 32-битный инсталлятор: python-2.7.10.msi)
- PyGTK 2.24 Сайт (прямая ссылка на 32-битный инсталлятор: pygtk-all-in-one-2.24.2.win32-py2.7.msi)
- PySerial 2.7 Сайт (прямая ссылка на 32-битный инсталлятор: pyserial-2.7.win32.exe)
- PyWin32 build 221 Сайт (ссылка на 32-битный инсталлятор: pywin32-221.win32-py2.7.exe)
- zope.interface 4.1.3 Сайт (прямая ссылка на 32-битный инсталлятор: zope.interface-4.1.3.win32-py2.7.exe)
- Twisted 15.4.0 Сайт (прямая ссылка на 32-битный инсталлятор: Twisted-15.4.0.win32-py2.7.msi)
tray_proxy под Ubuntu, Debian
Для работы необходимо:
- Python 2.7: apt install python2.7 python-pip python-dev build-essential
- PyGTK 2.24: apt install python-gtk2
- Обновить pip: pip install --upgrade pip
- PySerial 2.7: _pip install pyserial==2.7
- zope.interface 4.1.3: pip install zope.interface==4.1.3
- Twisted 15.4.0: pip install Twisted==15.4.0
Скрипт установки:
#!/bin/bash
apt install python2.7 python-pip python-dev build-essential python-gtk2
pip install --upgrade pip
pip install pyserial==2.7 zope.interface==4.1.3 Twisted==15.4.0
Настройка tray_proxy и ККМ
Откройте файл settings.py и укажите параметры:
- BILLING_IP - IP биллинга (команды будут приниматься только с этого ip)
- DEVICE_TYPE - тип устройства: 0 - COM-порт, 1 - USB
- DEVICE - порт, к которому подключен кассовый аппарат, например: 'COM3'
- BAUDRATE - скорость соединения с портом, например: 115200
- KKM - протокол работы
- DEBUG - следует выставить "0", если запускаете двойным кликом по "main.pyw", или "1", если через командную строку.
- AUTOSTART - следует выставить "1", если после запуска скрипта нужно сразу запускать веб-сервер и соединение с ККМ.
Опционально: возможность передать все настройки (их может быть много) в виде строки json
- ATOL_SETTINGS = параметры для ККМ, например:
r'{"Port":"1"}'
Далее можно запускать main.pyw двойным кликом или через консоль (для запуска могут потребоваться права администратора).
Под Ubuntu есть возможность запуска приложения через иконку TrayProxy (файл иконки tray_proxy.desktop)
Правый клик по иконке в системном трее, пункт "Start Server" запустит веб-сервер, который будет принимать запросы на печать чеков от биллинга.
Для этого нужно убедиться, что порт 8080 открыт на компьютере кассира.
Настройки для ШТРИХ-М
Для работы с данными ККМ нужно установить "ШТРИХ-М: Драйвер ККТ", скачать который можно по ссылке https://www.shtrih-m.ru/support/download/ , и настроить взаимодействие с ККМ в драйвере.
В файлер settings.py укажите:
- KKM - 'SHTRIH_COM'
- DEVICE - 0, где 0 - номер устройства в драйвере
Настройки для ПИРИТ
Сайт производителя аппарата: http://www.crystals.ru/fiskalnyj-registrator
Работа проверялась на аппарате ПИРИТ ФР01К
Каких-либо специфичных настроек интеграция с ПИРИТ не имеет.
Теоретически, поддерживаются все устройства, работающие по протоколу ПИРИТ.
Настройка кассового аппарата АТОЛ
Сайт производителя аппарата: http://www.atol.ru/products/kkt/
Описание протокола:
- Описание протокола АТОЛ версии 3.1
- Описание протокола АТОЛ версии 3.0
- Описание протокола АТОЛ версии 2.4
Протокол АТОЛ ККТ 3.1
По данному протоколу осуществляется поддержка 54-ФЗ аппаратами Атол с ФФД 1.0.5. Работа проверялась на аппарате АТОЛ 30Ф
Как настроить:
- Для работы нужен драйвер АТОЛ версии 10 или выше, его можно скачать в центре загрузки АТОЛ в разделе "Контрольно-кассовая техника".
Прямая ссылка на версию драйвера 10.10.6.0: https://fs.atol.ru/_layouts/15/atol.templates/Handlers/FileHandler.ashx?guid=32a1c76d-1166-4536-b8df-d9cc244f3ff2&webUrl=Если используется Windows - обязательно устанавливайте 32-битную версию (архив/версия/installer/exe/KKT10-версия-windows32-setup.exe). Устанавливать драйвер в ОС Windows необходимо в папку: C:\Program Files\ATOL - После скачивания архива скопируйте libfptr10.py (файл архив/версия/wrappers/python/) в папку с TrayProxy.
- Укажите в settings.py:
- KKM - ATOL3
- Дополнительные опции для TrayProxy: возможность передать все настройки (их может быть много) в виде строки json
- ATOL_SETTINGS - параметры для ККМ, например:
r'{"Port":"1"}'
- ATOL_SETTINGS - параметры для ККМ, например:
Если настройки не подошли, адаптер попытается вызвать окно настроек драйвера. Если после этого соединение удастся - успешные настройки будут записаны в лог.
Протокол АТОЛ ККТ 2.4
Работа проверялась на аппаратах Fprint-03K и Fprint-22K
![]() | Внимание: У названия ККТ Fprint в конце должна быть буква K. Например в названии FPrint-55K. Оборудование FPrint-55 (без буквы К) является принтером а не ККТ и не поддерживается для интеграции с биллингом |
Теоретически, поддерживаются ККТ FPrint-55K, FPrint-22K, FPrint-11ПТК и FPrint-77ПТК, поддерживающие протокол Атол версии 2.4 с включенным режимом совместимости 1.0
Если Ваше устройство работает по протоколу версии 3, то переключить его на протокол 2 версии можно через Сервисный режим.
Режим совместимости для протокола 2.4 и ФФД 1.0
Для оборудования с версией протокола 3+ необходимо включить режим совместимости через драйвер идущий в поставке
На 4 шаге установите значения:
- Таблица 2 Ряд 1 Поле 109
- Значение установите 001
Verifone vx820. Безналичная оплата с терминалов
Для того, чтобы биллинг мог отправлять команды на терминал Verifone для списания конкретной суммы с абонентов, необходимо провести следующую настройку:
- TrayProxy
POS = 'PILOTNT' POS_PATH = r'C:\sc552'
- POS - включение поддержки POS-терминала, PILOTNT – имя адаптера (в данный момент единственный)
- POS_PATH - путь где искать файл pilot_nt.dll. Чаще всего ПО Сбербанка располагается в папке C:\sc552
- Перейти на вкладку Платежные системы - Настройки веб-кассы и выставить опцию ИСПОЛЬЗОВАТЬ POS-ТЕРМИНАЛ
- Для того, чтобы можно было отправить команды на терминал, необходимо перейти в меню Веб-касса, найти нужного абонента и добавить Безналичный приход, выставив данную опцию.
- После добавления прихода, он будет отображен у абонента. Для того, чтобы данную сумму списать с карты абонента, необходимо рядом с платежом выбрать пункт Оплатить картой
После этого команды будут отправлены на терминал и абоненту будет предложено вставить/приложить карту.
Как только списание завершится, биллинг автоматически отправит команды на печать чека.
![]() | Внимание: Опция Оплатить картой будет доступна только для безналичных платежей! |
Настройка биллинга
В настройках веб-кассы в поле "ККМ (PIRIT, ATOL И Т.П.)" нужно указать протокол:
![]() | Для всех новых инсталяций и инсталяций на Linux используется Атол версии 3 |
- Оставьте пустым для АТОЛ версии 3
- ATOL - для АТОЛ версий 1 и 2
- SHTRIH_COM - для ШТРИХ-М
- PIRIT - для ПИРИТ
У АТОЛ есть пароли оператора и смены режима:
- ККМ ПАРОЛЬ ДОСТУПА - по умолчанию "0"
- ККМ ПАРОЛЬ СМЕНЫ РЕЖИМА - по умолчанию "30".
Решение проблем с TrayProxy
Для работы с ККМ необходимо:
- Перейти на вкладку "Веб - касса" из меню основной платформы
- Выбрать вкладку "ККМ"
- В открывшемся меню нажать на кнопку "Запустить ККМ"
Если биллинг выдаст ошибку необходимо:
- Открыть файл settings.py и выставить в поле "DEBUG" значение "1"
- запустить файл main.pyw из командной строки с помощью python.
- Для запуска из командной строки необходимо перейти в каталог с установленным питоном и выполнить команду python 'путь до файла main.pyw", напирмер:
python C:\tray_proxy\main.pyw
- После этого откроется окно с подробным логом
- Ещё раз нажмите кнопку "Запустить ККМ" и увидите какую именно ошибку выдает tray_proxy
Нет связи с ККМ
Убедитесь что с биллинга доступен порт 8080 компьютера оператора, на котором запущен TrayProxy.
Проверите открыт ли порт 8080:
![]() | root@billing # telnet 192.168.0.0 8080 Trying 192.168.0.0... |
Trying означает, что порт закрыт. При установлении связи появится статус "Connected".
Если порт закрыт, установите необходимые правила файрвола, или отключите брандмауэр.
![]() | Reject host 192.168.0.0 |
В логе trayproxy.log ошибка "reject" также означает отсутствие связи между биллингом и ПК, на котором установлена касса.
Если компьютер находится за NAT, пробросьте порт на маршрутизаторе.
![]() | В момент нажатии кнопки Открыть смену биллинг пытается отправить команду на tray_proxy, который находится на компьютере оператора, поэтому, если у биллинга нет доступа до компьютера оператора - связи не будет. |
Некорректный ответ API от ККМ
Возможно указаны неверные пароли. Необходимо перейти на вкладку Платежные системы - Настройки веб-кассы и поменять значения 30 и 0 у полей ККМ ПАРОЛЬ ДОСТУПА и ККМ ПАРОЛЬ СМЕНЫ РЕЖИМА
Произошла ошибка api: Неверная длина
У ККМ есть ограничение длины строки, у некоторых моделей это значение немного отличается. По умолчанию задано 48 символов. Ошибка "Произошла ошибка api: Неверная длина" означает, что для Вашего аппарата необходимо указать другое значение этого параметра. Изменить можно с помощью файла /app/asr_billing/cfg/kkm_atol_webcash.json , записав туда:
{"stringMax": 32}
Вместо "32" необходимо указать длину строки для Вашего аппарата.
Выполняется другая команда
Если биллинг выдает ошибку "Выполняется другая команда" - скорее всего драйвер не может запуститься, либо не закрыли диалог настроек АТОЛ.
Драйвер не готов
Если Вы используете Windows и АТОЛ версии 3, убедитесь что установлен 32-битный драйвер даже если ОС 64-битная - это можно посмотреть в оснастке "Установка и удаление программ"
Если все выше не помогло, что дать техподдержке чтобы мне помогли?
- Включите DEBUG в settings.py: DEBUG = 1
- Запустите TrayProxy
- Выполните команду с биллинга
- Если в интерфейсе кассы появилась ошибка, сделайте скриншот
- Создайте заявку и приложите к ней:
- Файл debug.log
- Файл настроек settings.py
- Скриншот ошибки