Портал поддержки продуктов CSI
Публичный ресурс
SetPrisma | Описание стыковки с SET Prisma v.2
Документ описывает стыковку с Prisma 6.0.005-6.1.004
Протоколы.
web-сервис.
Параметры подключения к Set Prisma
- IP-адрес сервера Set Prisma и порт;
- транспортный протокол: HTTP/HTTPS;
- сертификат самоподписанный.
POST /events
Request body (Content type: application/json)
Response
Code | ||
---|---|---|
200 | ОК | |
200 | ERROR | {"errorCode":-1} |
500 | EXCEPTION | Server error |
Ошибки
errorCode | error |
---|---|
-1 | Отсутствует лицензия |
-2 | Не удалось разобрать пакет |
TCP/IP.
Параметры подключения к Set Prisma
- на кассе настраивается IP-адрес сервера Set Prisma и порт;
- значение порта по умолчанию: 21945;
- транспортный протокол: TCP;
Отправка событий
- при наступлении события на кассе формируется информационный пакет для Set Prisma;
- информация передается в формате JSON;
- пакет шифруется;
- в одном пакете можно будет передавать как одно событие, так и список событий;
Обратная связь от Set Prisma
По каждому принятому и обработанному пакету с касс (не зависимо от того, пришли ли эти пакеты по одиночке или в пачке), на кассы, с которых пришли эти пакеты отправляются сообщения о количестве обработанных событий в пакете или код ошибки:
- если Set Prisma успешно обработала Х событий из пакета, полученного от кассы, на эту кассу отправляется «X»;
- если от кассы пришло битое событие, на кассу отправляется код ошибки «-2» (не удалось расшифровать пакет);
- если Set Prisma не обнаружила лицензию, кассам в ответ на пакеты с событиями отправляется код ошибки «-1» (нет лицензии);
Алгоритм шифрования пакетов
- Данные для отправки шифруются с помощью сессионного ключа алгоритмом AES.
- Сессионный ключ шифруется с помощью public-ключа алгоритмом RSA.
- Формируется пакет на отправку:
Наименование | Длина | Описание |
---|---|---|
KeyLength | 2 байта | Длина зашифрованного ключа |
AesKey | KeyLength байт | Зашифрованный RSA ключ AES |
DataLength | 2 байта | Длина зашифрованных данных |
Data | DataLength байт | Зашифрованные AES данные |
- Сессионный AES-ключ касса генерирует каждый раз (уникальный для каждого пакета).
- Публичный ключ RSA:
30819f300d06092a864886f70d010101050003818d003081890281810090465a968ca66a78354f5f9608c19c91f869b833af1f4f47a72bd460db51db516a8b4d56055f82a19918d716b2511a2ccccbd4ca32572341160f65458d3be42633fdbe850834975a0749b4406a5915a1235f3c7e504c2fabd5d2410802f5526f3a46f538f9e4ede1f756ac583c91667b57dcb20e1d9a4391ce50659446ddad2b0203010001
Примеры пакетов
Одно событие в пакете:
{"event":{"prefix":"KKM","shop":108,"cash":35,"mode":777,"tabNumber":"1234","cashier":"Иванов И.И.","purchase":768,"pos":1,"barcode":"2900000000000","item":"12341","name":"Бананы","price":98.8,"quant":10.0,"sum":988.0,"sumAll":15423.0,"cardNumber":"12345678","discount":5.0,"discountAll":34.5,"dateTime":"19.04.2016 10:00:00.000"}}
Несколько событий в пакете:
{"events":[{"prefix":"KKM","shop":108,"cash":35,"mode":777,"tabNumber":"1234","cashier":"Иванов И.И.","purchase":768,"pos":1,"barcode":"2900000000000","item":"12341","name":"Бананы","price":98.8,"quant":10.0,"sum":988.0,"sumAll":15423.0,"cardNumber":"12345678","discount":5.0,"discountAll":34.5,"dateTime":"19.04.2016 10:00:00.000"}, {"prefix":"KKM","shop":108,"cash":35,"mode":777,"tabNumber":"1234","cashier":"Иванов И.И.","purchase":768,"pos":2,"barcode":"2900000000000","item":"12341","name":"Бананы","price":98.8,"quant":10.0,"sum":988.0,"sumAll":15423.0,"cardNumber":"12345678","discount":5.0,"discountAll":34.5,"dateTime":"19.04.2016 10:00:00.000"}]}
Описание полей
Наименование поля | Тип данных | Расшифровка | Значение по умолчанию | Ограничение по количеству символов |
---|---|---|---|---|
prefix | Символьный | Префикс объекта (ККМ) | Обязательное поле | 3 |
shop | Целый числовой | Номер магазина | Обязательное поле | - |
cash | Целый числовой | Номер ККМ | Обязательное поле | - |
mode | Целый числовой | Код события | Обязательное поле | - |
tabNumber | Символьный | Код кассира (таб. номер) | Обязательное поле | 20 |
cashier | Символьный | Имя кассира | Обязательное поле | 40 |
purchase | Целый числовой | Номер чека | Обязательное поле | - |
pos | Целый числовой | Номер позиции в чеке или номер последней строки чека | Обязательное поле | - |
barcode | Символьный | Штрих-код товара | пусто | 20 |
item | Символьный | Код товара | пусто | 30 |
name | Символьный | Наименование товара | пусто | 30 |
price | Числовой | Цена товара | 0.0 | - |
quant | Числовой | Количество товара | 0.0 | - |
sum | Числовой | Сумма по товарной позиции | 0.0 | - |
sumAll | Числовой | Сумма по чеку | 0.0 | - |
cardNumber | Символьный | Номер карты | пусто | 20 |
discount | Числовой | Скидка по строке чека | 0.0 | - |
discountAll | Числовой | Скидка по чеку | 0.0 | - |
dateTime | Числовой | Дата / время события | Обязательное поле | - |
© 1994-2023, ООО "Кристалл Сервис Интеграция".
Все права защищены.