Портал поддержки продуктов 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ОК

200ERROR
{"errorCode":-1}
500EXCEPTIONServer 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.
  • Формируется пакет на отправку:
Наименование
Длина
Описание
KeyLength2 байтаДлина зашифрованного ключа
AesKeyKeyLength байтЗашифрованный RSA ключ AES
DataLength2 байтаДлина зашифрованных данных
DataDataLength байтЗашифрованные 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, ООО "Кристалл Сервис Интеграция".
Все права защищены.

Политика обработки персональных данных