Публичное пространство
SetRetail10 ◾️ Стыковка с SetPrisma по новому протоколу с использованием данных в JSON-формате (начиная с версии 10.2.23)
Старый протокол
В настоящее время отправка событий на сервер SetPrisma реализована через посредник SetPrisma — отдельный сервис, установленный на кассе. Касса передаёт события в стандартном формате SetPrisma посреднику в виде UDP-пакетов, а посредник перенаправляет их на сервер SetPrisma по TCP- или UDP-протоколу (в зависимости от настроек). Кроме того, посредник SetPrisma реализует буферизацию неотправленных событий (для конфигурации TCP).
События между кассой и сервером SetPrisma передаются в незашифрованном виде, что приводит к следующим последствиям:
Снижается безопасность в магазине, поскольку пакет легко перехватить и проанализировать.
В магазине могут устанавливать сторонние событийные системы, работа которых может быть непредсказуемой из-за изменений, которые мы вносим в кассовое ПО. Это, в свою очередь, может вызвать негативную реакцию со стороны клиента.
Это необоснованный риск, поскольку мы не несём ответственности за работоспособность сторонних систем. Однако для снижения репутационных рисков целесообразно предотвращать такие ситуации заранее.
Новый протокол
Начиная с версии 10.2.23 реализован переход на новый протокол взаимодействия с SetPrisma, который обладает рядом преимуществ:
расширяемость протокола за счёт передачи данных в формате JSON;
защищённость передаваемых данных с помощью шифрования;
повышение надёжности за счёт обратной связи от сервера SetPrisma;
новый протокол реализован в виде модуля кассы, что позволяет отказаться от посредника SetPrisma;
совместимость со старым протоколом не требуется. Заказчик должен будет обновить SetPrisma одновременно с установкой новой версии SetRetail10;
касса будет отправлять данные в SetPrisma только по TCP-протоколу;
в офлайн-режиме касса накапливает данные в течение двух недель. Более старые данные удаляются;
если после восстановления связи в кассе накопились неотправленные события, они отправляются в пакетном режиме — по 100 событий в одном пакете;
в офлайн-режиме производительность кассы не снижается;
при восстановлении связи с SetPrisma допускается задержка отправки событий до 5 минут;
в кассовом патче необходимо предусмотреть отключение посредника SetPrisma, а в скрипте отката — его включение.
Параметры подключения
на кассе настраиваются IP-адрес сервера SetPrisma и порт;
номер порта: 21945;
транспортный протокол: TCP.
На сервере:
1. Интеграция → Внешние процессинги → введите в строку поиска set:prisma → кликните Призма → установите флажок Set:Prisma → кликните .
2. Войдите в настройки Set:Prisma, установите IP-адрес событийного сервера и настройки кодировки для передачи сообщений о названиях товаров на разных языках → кликните .
Тип соединения TCP или UDP перед IP-адресом не указывается!
ℹ️ Поддержка национальных языков в Prisma (с версии 10.5.3.0)
https://crystals.atlassian.net/browse/SRTG-773
https://crystals.atlassian.net/browse/CR-15262
Начиная с версии 10.5.3.0, реализована корректная передача и отображение названий товаров на национальных языках (армянский, казахский, азербайджанский, узбекский, киргизский, белорусский, таджикский и др.).
В настройках внешних процессингов для Set:Prisma в поле «Кодировка сообщений» вручную укажите тип кодировки:
utf-8.Важно: Если оставить поле пустым, система по умолчанию будет использовать
cp866, что приведет к некорректному отображению символов.
Почему это необходимо:
Ограничение CP866: Старая кодировка (
cp866) поддерживает только латиницу и кириллицу. Специфические буквы национальных алфавитов (например, армянского или расширенного казахского) в ней отсутствуют, из-за чего в Prisma вместо названий отображаются знаки вопроса или «кракозябры».Универсальность UTF-8: Переход на
utf-8позволяет передавать любые символы Unicode. Это гарантирует, что текст, отправленный с кассы, будет идентичен тексту, отображаемому в интерфейсе Prisma.Согласованность данных: Указание кодировки в настройках служит сигналом для Prisma, как именно интерпретировать входящий поток данных от кассового сервера.
Пример работы:
Отправка событий
при наступлении события на кассе формируется информационный пакет для SetPrisma;
информация передаётся в формате JSON;
пакет шифруется;
в одном пакете можно передавать как одно событие, так и список событий.
Обратная связь от SetPrisma
По каждому принятому и обработанному пакету с кассы (независимо от того, поступили ли пакеты по одному или в составе пачки) на кассу, с которой был отправлен пакет, передаётся сообщение о количестве обработанных событий в пакете или код ошибки:
если Set Prisma успешно обработала Х событий из пакета, полученного от кассы, на эту кассу отправляется «X»;
если от кассы пришло битое событие, на кассу отправляется код ошибки «-2» (не удалось расшифровать пакет);
если Set Prisma не обнаружила лицензию, кассам в ответ на пакеты с событиями отправляется код ошибки «-1» (нет лицензии).
Активация пересылки сообщений в Set Prisma (версий ниже 6.0.4) событий с касс использующих новый протокол
1. Скопируйте папку «SetPrismaProxy» на компьютер с установленной службой «SET - Сервер приема и первичной обработки событий от касс».
2. Установите на этом компьютере (или проверьте, что установлена) java 7x32 не ниже 80-ой версии.
3. Из папки "SetPrismaProxy" запустите SETPrismaProxy.exe из командной строки «
SETPrismaProxy.exe /install4. Настройте перезапуск службы SET - Prisma Proxy при сбоях.
5. Добавьте разрешение для порта 21945 в брендмауэр, выполнив следующие команды в командной строке от имени администратора:
netsh advfirewall firewall addrule name="Set Prisma Proxy IN TCP" protocol=TCP localport=21945action=allow dir=IN profile=any
netsh advfirewall firewall addrule name="Set Prisma Proxy IN UDP" protocol=UDP localport=21945action=allow dir=IN profile=any
netsh advfirewall firewall addrule name="Set Prisma Proxy OUT TCP" protocol=TCP localport=21945action=allow dir=OUT profile=any6. Запустите службу SET - Prisma Proxy.