Интеграция с кассовыми аппаратами

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (41)

просмотр истории страницы
h1. Схема взаимодействия биллинга с кассовым аппаратом

У кассира на рабочем компьютере должен должно быть запущено специальное приложение (tray_proxy). Биллинг, при авторизации кассира, запоминает его ip адрес и далее все команды для ККМ отправляются на этот ip адрес и обрабатывается приложением tray_proxy.
{INFO}
По умолчанию при печати чека для *наличной* оплаты биллинг отправляет команды на печать только 1 чека. В случае, если необходимо распечатать повторно тот же самый чек и отдать абоненту - используйте опцию *Повторить последний документ* на вкладке ККМ
{INFO}

h1. Операции с кассовым аппаратом

!ATOL2.png|border=0,width=400!

Доступны операции:
* Отчёт с гашением
* Отчёт без гашения
* Запустить ККМ
* Открыть смену
* Повтрорить последний документ
* Внесение средств - корректировка содержимого кассы, чтобы счетчик ККМ совпадал с фактическим количеством наличных денег в кассе, не добавляет средства на счёт абонента;
* Выемка средств - корректировка содержимого кассы, аналогично "Внесению средств";
* Проверка связи
* Получить ID терминала
* Закрыть день

h1. Установка и настройка

h2. Установка tray_proxy

Скачать приложение можно по ссылке: [Интеграция с кассовыми аппаратами^tray_proxy_v2.3.zip] аппаратами^tray_proxy_v3.1.zip]

h3. tray_proxy под Windows (XP, 7, 10)

Для работы необходимо:
* *Python 2.7* [Сайт|https://www.python.org/downloads/] (прямая ссылка на 32-битный инсталлятор: [python-2.7.10.msi|https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi])
* *PyGTK 2.24* [Сайт|http://www.pygtk.org/downloads.html] (прямая ссылка на 32-битный инсталлятор: [pygtk-all-in-one-2.24.2.win32-py2.7.msi|http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.24/pygtk-all-in-one-2.24.2.win32-py2.7.msi])
* *PySerial 2.7* [Сайт|https://pythonhosted.org/pyserial/] (прямая ссылка на 32-битный инсталлятор: [pyserial-2.7.win32.exe|https://pypi.python.org/packages/47/c9/7802e11ab388ad1539de716649add8bb8ca8bdff660364b3a404f79c27b7/pyserial-2.7.win32.exe#md5=21555387937eeb79126cde25abee4b35])
* *PyWin32 build 221* [Сайт|https://sourceforge.net/projects/pywin32/] (ссылка на 32-битный инсталлятор: [pywin32-221.win32-py2.7.exe|https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/pywin32-221.win32-py2.7.exe/download])
* *zope.interface 4.1.3* [Сайт|https://zopeinterface.readthedocs.io] (прямая ссылка на 32-битный инсталлятор: [zope.interface-4.1.3.win32-py2.7.exe|https://pypi.python.org/packages/49/5f/ed5ea875af4e802198d035efe985d341d9b50edddbc22b785d2ef4b9eb66/zope.interface-4.1.3.win32-py2.7.exe#md5=e0a5bbc762126157b63d0233e26cc751])
* *Twisted 15.4.0* [Сайт|http://twistedmatrix.com/trac/wiki/Downloads] (прямая ссылка на 32-битный инсталлятор: [Twisted-15.4.0.win32-py2.7.msi|http://twistedmatrix.com/Releases/Twisted/15.4/Twisted-15.4.0.win32-py2.7.msi])

# *Python 2.7* [Сайт|https://www.python.org/downloads/] (прямая ссылка на 32-битный инсталлятор: [python-2.7.10.msi|https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi])
# *PyGTK 2.24* [Сайт|http://www.pygtk.org/downloads.html] (прямая ссылка на 32-битный инсталлятор: [pygtk-all-in-one-2.24.2.win32-py2.7.msi|http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.24/pygtk-all-in-one-2.24.2.win32-py2.7.msi])
# *PySerial 2.7* [Сайт|https://pythonhosted.org/pyserial/] (прямая ссылка на 32-битный инсталлятор: [pyserial-2.7.win32.exe|https://pypi.python.org/packages/47/c9/7802e11ab388ad1539de716649add8bb8ca8bdff660364b3a404f79c27b7/pyserial-2.7.win32.exe#md5=21555387937eeb79126cde25abee4b35])
# *PyWin32 build 221* [Сайт|https://sourceforge.net/projects/pywin32/] (ссылка на 32-битный инсталлятор: [pywin32-221.win32-py2.7.exe|https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/pywin32-221.win32-py2.7.exe/download])
# *zope.interface 4.1.3* [Сайт|https://zopeinterface.readthedocs.io] (прямая ссылка на 32-битный инсталлятор: [zope.interface-4.1.3.win32-py2.7.exe|https://pypi.python.org/packages/49/5f/ed5ea875af4e802198d035efe985d341d9b50edddbc22b785d2ef4b9eb66/zope.interface-4.1.3.win32-py2.7.exe#md5=e0a5bbc762126157b63d0233e26cc751])
# *Twisted 15.4.0* [Сайт|http://twistedmatrix.com/trac/wiki/Downloads] (прямая ссылка на 32-битный инсталлятор: [Twisted-15.4.0.win32-py2.7.msi|http://twistedmatrix.com/Releases/Twisted/15.4/Twisted-15.4.0.win32-py2.7.msi])

h3. 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_

Скрипт установки:
h2. Настройка tray_proxy и ККМ

Откройте файл settings.py и в укажите параметры:
Откройте файл _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* = параметры для ККМ, например:
{code}r'{"Port":"1"}'{code}

Далее можно запускать *main.pyw* двойным кликом или через консоль (для запуска могут потребоваться права администратора).
Под Ubuntu есть возможность запуска приложения через иконку *TrayProxy* (файл иконки *tray_proxy.desktop*)
В файлер settings.py укажите:

* KKM = 'SHTRIH_COM'
* *KKM* - 'SHTRIH_COM'
* DEVICE = *DEVICE* - 0, где 0 - номер устройства в драйвере

h3. Настройки для ПИРИТ

Сайт производителя аппарата: [http://www.atol.ru/products/kkt/]

Описание протокола:

* [Описание протокола АТОЛ версии 3.1|Интеграция с кассовыми аппаратами^Протокол_ККТ_3.1.pdf]

* [Описание протокола АТОЛ версии 3.0|Интеграция с кассовыми аппаратами^Протокол_ККТ_3.0.pdf]

* [Описание протокола АТОЛ версии 2.4|Интеграция с кассовыми аппаратами^Protokol_KKM_2.4_040614.pdf]

h4. Протокол АТОЛ ККТ 3.1

По данному протоколу осуществляется поддержка 54-ФЗ аппаратами Атол с ФФД 1.0.5. Работа проверялась на аппарате *АТОЛ 30Ф*

Работа проверялась на аппарате *Fprint-22ПТК*
Как настроить:
# Для работы нужен драйвер АТОЛ версии 10 или выше, его можно скачать в [центре загрузки АТОЛ|http://fs.atol.ru/SitePages/Центр загрузки.aspx] в разделе "*Контрольно-кассовая техника*".
Прямая ссылка на версию драйвера 10.6.0.0: [http://fs.atol.ru/...|http://fs.atol.ru/_layouts/15/atol.templates/Handlers/FileHandler.ashx?guid=d225fe2b-37a7-4251-ad72-9621eae7bc3b&webUrl=]
{note}Если используется Windows - обязательно устанавливайте 32-битную версию (архив/версия/installer/exe/KKT10-версия-windows32-setup.exe).{note}
# После скачивания архива скопируйте *libfptr10.py* (файл архив/версия/wrappers/python/) в папку с TrayProxy.
# Укажите в _settings.py_:
#* *KKM* - ATOL3
# Дополнительные опции для TrayProxy: возможность передать все настройки (их может быть много) в виде строки json
#* *ATOL_SETTINGS* - параметры для ККМ, например:
{code}r'{"Port":"1"}'{code}

Если настройки не подошли, адаптер попытается вызвать окно настроек драйвера. Если после этого соединение удастся - успешные настройки будут записаны в лог.

h4. Протокол АТОЛ ККТ 2.4

Работа проверялась на аппаратах *Fprint-03K* и *Fprint-22K*
{info}
Внимание: У названия ККТ Fprint в конце должна быть буква *K*. Например в названии FPrint-55K. Оборудование FPrint-55 (без буквы *К*) является принтером а не ККТ и не поддерживается для интеграции с биллингом
{info}

Теоретически, поддерживаются ККТ FPrint-55K, FPrint-22K, FPrint-11ПТК и FPrint-77ПТК, поддерживающие _протокол Атол версии 2.4 с включенным режимом совместимости 1.0_

Для оборудования с версией протокола 3\+ необходимо включить режим совместимости через драйвер идущий в поставке
!kkm_sec_kod.png|border=1! !kkm_sec_kod.png|border=0,width=450!

На 4 шаге установите значения:
* Значение установите 001

h3. Verifone vx820. Безналичная оплата с терминалов.
Для того, чтобы биллинг мог отправлять команды на терминал Verifone для списания конкретной суммы с абонентов, необходимо провести следующую настройку:

# TrayProxy
{code}POS = 'PILOTNT'
POS_PATH = r'C:\sc552'{code}
#* *POS* - включение поддержки POS-терминала, PILOTNT -- имя адаптера (в данный момент единственный)
#* *POS_PATH* - путь где искать файл _pilot_nt.dll_. Чаще всего ПО Сбербанка располагается в папке _C:\sc552_ \\ \\
# Перейти на вкладку *Платежные системы - Настройки веб-кассы* и выставить опцию *ИСПОЛЬЗОВАТЬ POS-ТЕРМИНАЛ*
!kassa1.png|border=0,width=760! \\ \\
h2. Настройка биллинга

В [настройках веб-кассы|CarbonBilling:Веб-интерфейс кассира] в поле "*ККМ (PIRIT, ATOL И Т.П.)*" нужно указать протокол: _ATOL_ - для АТОЛ, _SHTRIH_COM_ - для ШТРИХ-М, _PIRIT_ - для ПИРИТ
{info} Для всех новых инсталяций и инсталяций на Linux используется Атол версии 3{info}
* +Оставьте пустым+ для _АТОЛ версии 3_
* *ATOL* - для АТОЛ версий 1 и 2
* *SHTRIH_COM* - для ШТРИХ-М
* *PIRIT* - для ПИРИТ

У АТОЛ есть пароли оператора и смены режима:
* *ККМ ПАРОЛЬ ДОСТУПА* - по умолчанию "30"
* *ККМ ПАРОЛЬ СМЕНЫ РЕЖИМА* - по умолчанию "30".

h1. Решение проблем с tray_proxy TrayProxy

Для работы с ККМ необходимо:

# Перейти на вкладку "Веб - касса" из меню основной платформы
!BASE.png|border=0,width=100! \\ \\
# Выбрать вкладку "ККМ"
!KKT.png|border=0,width=350! \\ \\
# В открывшемся меню нажать на кнопку "Запустить ККМ"

{code}
Вместо "32" необходимо указать длину строки для Вашего аппарата.

h2. Выполняется другая команда
Если биллинг выдает ошибку "Выполняется другая команда" - скорее всего драйвер не может запуститься, либо не закрыли диалог настроек АТОЛ.

h2. Драйвер не готов
Если Вы используете Windows и АТОЛ версии 3, убедитесь что установлен 32-битный драйвер +даже если ОС 64-битная+ - это можно посмотреть в оснастке "[Установка и удаление программ|https://support.microsoft.com/ru-ru/help/4028054/windows-10-repair-or-remove-programs]"

h2. Если все выше не помогло, что дать техподдержке чтобы мне помогли?

# Включите _DEBUG_ в settings.py: *DEBUG = 1*
# Запустите TrayProxy
# Выполните команду с биллинга
# Если в интерфейсе кассы появилась ошибка, сделайте скриншот
# Создайте заявку и приложите к ней:
#* Файл _debug.log_
#* Файл настроек _settings.py_
#* Скриншот ошибки