Пример создания bridge (http api — tcp) для ККТ "Касса №1" ("К1-Ф")
Пример создания bridge (http api — tcp) для ККТ «Касса №1» («К1-Ф»). Данная статья будет полезна интеграторам, программистам, тем кто работает (интегрирует, разрабатывает) различное ТО либо железки. Версия и релиз технологической платформы не имеет значения.
- Описание
- Подробнее
Описание
Пример создание http сервера для работы с различным торговым оборудованием.
В статье рассматривается пример для фр — ККТ "Касса №1" ("К1-Ф").
Задача:
Есть bitrix-сайт(1С Битрикс). Подключили эквайринг СБ, купили фр К1-Ф, нужно связать.
Отступление:
1. Да я знаю, что эквайринг СБ совместно с ГК Атол предоставляет возможность пробивать чеки.(Проектировал не я, что имеем, то имеем (bitrix-сайт, php-модуль для СБ, всё это на хостинге, с одной стороны, и с другой где-то в офисе воткнута в сеть К1-Ф)).
2. Хотя и у К1-Ф есть web админка, я не нашел доков по http методам, искал здесь:
http://www.kassa.astralnalog.ru/docs, http://v8.1c.ru/to/k1f/, на сайте производителя, итс и тд.
3. Да я знаю, как можно сделать в модуле php get/post и тд, сделано все таки разделение: php пишет в базу об оплате, python читает, при добавлении новых пробивает чек. Отслеживание происходит через запрос в бд источника с передачей в параметре последнего ид, и дальнейшего прохода по выборке для пробития.
В статье рассматриваются следующие компоненты:
1. Создание эмулятора интерфейса команд ФР (нужен для теста, и вообще понять какой формат обмена)
2. Создание Web(HTTP) сервера для работы c ФР (фактически проксирование с HTTP на TCP, + некоторая инкапсуляция методов для работы, об этом ниже)
3. Разработка клиентской части (пример чтения таблиц mysql(источник на стороне хоста), пример пробития, пример записи результата в sql lite(приемник на стороне офиса))
Шаг 0. Протокол обмена ФР.
Обмен с ФР проходит по TCP(ФР — TCP сервер), по заданному формату. Формат — JSON(UTF-8), структура сообщения — первые 4 байта длина сообщения, с 5-го — сообщение.
Структура команд будет описана ниже.
Шаг 1. Эмулятор ФР.
