Публичное пространство
SetRetail SCO v.3◾Продажа лотерейных билетов "Столото"
https://crystals.atlassian.net/browse/SR-8410
https://crystals.atlassian.net/browse/SR-8468
https://crystals.atlassian.net/browse/CR-12236
10.4.20.0
Описание
Начиная с версии 10.4.20.0 на КСО доступна продажа лотерейных билетов ЭЛБ 2.0.
Ценность
Доработка позволит ускорить процесс обслуживания покупателей, повысить средний чек и объем покупок лотерейных билетов, а также исключить возможность мошенничества при покупке.
Глоссарий
Для удобства использования статьи ниже приводится глоссарий с используемыми сокращениями.
ЭЛБ - электронный лотерейный билет;
ЛБ - лотерейный билет;
УПЛС - уведомление о приеме лотерейной ставки;
СИС - сервер интеграции Столото;
БИК/Купон* - бланк с игровой комбинацией;
ИП - интеграционный процессинг (ранее –ЛАр, КХД, ЛИП);
ПО Кристалл (Лотерейный модуль Кристалл (KRST)) - лотерейный модуль на базе SET10. Система предназначена для обеспечения полнофункциональной работы Агентов Кристалл с Лотерейными продуктами на базе кассового ПО, разрабатываемого компанией CSI;
ШК - штрихкод билета.
Пример работы успешного сценария
Пример УПЛС слипа
Продажа билета. Сканирование ШК билета
Покупатель добавляет билет через сканирование ШК/QR билета → касса подтверждает принадлежность ШК к билетам Столото.
Касса делает запрос
api/betInfoдля определения статуса билета;если билет недоступен для продажи
(requestSign !=0)→ отобразится текст из поляmessage;если билет доступен для продажи
(requestSign=0)→ переход к следующему шагу.
Билет добавляется в чек → покупатель нажимает Перейти к оплате.
КСО блокируется и вызывает консультанта для подтверждения возраста.
Консультант авторизуется на кассе и подтверждает возраст покупателя сканированием бейджа.
Касса возвращается режим покупателя на экран выбора типов оплаты.
Касса регистрирует продажу ЭЛБ без номера телефона
/api/playReceipt.Покупатель выбирает тип оплаты и закрывает чек → чек фискализируется.
В СИС в отчет для сверки попадает продажа билета ЭЛБ 2.0 с
externalTransactionIdпродажи.Касса печатает чек и УПЛС для каждого билета (печатается даже при отсутствии фискального бумажного чека).
Пример работы отрицательного сценария
ЭЛБ 2.0 недоступен для продажи
Покупатель добавляет билет через сканирование ШК/QR билета → касса подтверждает принадлежность ШК к билетам Столото.
Касса делает запрос
api/betInfoдля определения статуса билета.Касса получает ответ, что билет недоступен для продажи (
requestSign !=0) → касса выводит информационное сообщение из полученного в ответе поляmessage.Билет не добавлен в чек → покупатель может работать с чеком дальше.
Покупка ЭЛБ 1.0
Покупатель выбрал билет 1.0 (без QR-кода, длина ШК 12/17 символов).
Покупатель сканирует ШК этого билета на кассе самообслуживания.
Касса проверяет, относится ли купон к ЭЛБ 1.0 или 2.0 → билет определен к ЭЛБ 1.0.
На кассе выводится неблокирующее сообщение Купон недоступен для продажи на данной кассе по техническим причинам. Пожалуйста, используйте купоны с QR или обратитесь к кассиру.
Аннулирование при ошибке регистрации ЭЛБ
Покупатель добавляет билет через сканирование ШК/QR билета → касса подтверждает принадлежность ШК к билетам Столото.
Касса делает запрос
api/betInfoдля определения статуса билета;если билет недоступен для продажи
(requestSign !=0)→ отобразится текст из поляmessage;если билет доступен для продажи
(requestSign=0)→ переход к следующему шагу.
Билет добавляется в чек → покупатель нажимает Перейти к оплате.
КСО блокируется и вызывает консультанта для подтверждения возраста.
Консультант авторизуется на кассе и подтверждает возраст покупателя.
Касса возвращается режим покупателя на экран выбора типов оплаты.
Касса регистрирует продажу ЭЛБ без номера телефона
/api/playReceipt.В ответе на запрос
/api/playReceiptне поступает положительный ответ (HTTP-code: != 200илиrequestSign != 0) → КСО блокируется и вызывает консультанта.Консультант авторизуется на КСО сканированием бейджа → на экране отображается сообщение Ошибка при регистрации электронного лотерейного билета. Заберите билет у покупателя.
Консультант убирает необходимые билеты и возвращает кассу в режим покупателя на экран добавления товаров → билеты из чека удалены/
Покупатель выбирает тип оплаты и закрывает чек → чек фискализируется.
Ограничения
Реализована продажа только ЭЛБ 2.0. ЭЛБ 1.0 и наборы ЭЛБ 2.0 на КСО не реализуется.
Возврат ЭЛБ на КСО не реализован.
Ручное добавление билета (ввод ШК купона) не предусмотрено.
Для ЭЛБ запрещено изменение количества позиций в чеке на КСО. Каждый ЭЛБ это отдельная позиция в чеке.
Выплата выигрыша на КСО v.3 не предусмотрена.
Покупатель может удалить ЭЛБ. После удаления товара при переходе к оплате всегда вызывается консультант для подтверждения удаления товаров.
Аннулировать чек полностью можно только с помощью консультанта. Если настроено автоаннулирование чека при бездействии покупателя, тогда дополнительного подтверждения консультанта не требуется.
При продаже билета УПЛС передается на печать в принудительном режиме, независимо от печати фискального чека (отказ от печати чека покупателем или отправка чека в электронном виде). Дополнительно происходит информирование покупателя о необходимости забрать УПЛС на экране. При наличии актуальной почты покупателя УПЛС будет отправлен на нее.
Дополнительная информация
Контроль веса для ЭЛБ не предусмотрен (по дефолту ЭЛБ рассматриваются кассой как легковесный товар, поэтому контроль веса на КВП не требуется).
Лотерейный билет может быть добавлен в чек вместе с другими товарами.
Для продажи ЭЛБ будет выполнен вызов консультанта для подтверждения возраста 18+ при переходе к оплате.
При аннулировании/отмене билета повторная реализация лотерейного билета невозможна, билет считается отменённым
Штрихкод номера купона ЭЛБ 2.0 изменяется на 22-значный формат.
На купоне, сгенерированном по схеме ЭЛБ 2.0, добавляется QR-код. Содержимое QR-кода генерируется при печати в типографии. Пример ссылки - https://stolo.to/qr?g=1234&s=st&m=of&b=LC07103900001234567890&p=1234&n=9000012345678.
Примеры атрибутов ЭЛБ 2.0 (могут дополняться в справочнике СИС; префикс LC должен быть указан в Set Retail):
Если Префикс = LC и Код игры = 07103 и Серия = (90000-99999) и длина ШК = 22/20 Доп. признак: совпадение контрольного числа.
Если Префикс = LC и Код игры = 07105 и Серия = (90000-99999) и длина ШК = 22/20 Доп. признак: совпадение контрольного числа.
Если Префикс = LC и Код игры = 07115 и Серия = (90000-99999) и длина ШК = 22/20 Доп. признак: совпадение контрольного числа.
Если Префикс = LC и Код игры = 07101 и Серия = (90000-99999) и длина ШК = 22/20 Доп. признак: совпадение контрольного числа.
Примеры запросов и ответов
Запрос
/api/betInfoдля определения статуса билета:
Пояснение:
если билет уже продан или недоступен для продажи (
requestSign !=0в ответе), тогда отображается сообщение, переданное в полеmessageв ответе, регистрация продажи купона ЭЛБ 2.0 не производится;если билет не продан (определяется по
"requestSign": 0) – товар добавлен в чек;признак ЭЛБ 2.0 определяется по параметру
soldTicketType=2из ответа;
идентификатор терминала;
код игры;
количество тиражей, в которых участвует ставка;
номер тиража;
содержимое ШК;
версионность запроса.
{
"terminalId": {{teminal}},
"gameId": 7115,
"preferredDraw": 0,
"drawsNumber": 1,
"barcode": "LC07103999990020652509",
"version": 2
}Ответ на запрос
/api/betInfo:
признак исполнения запроса;
стоимость лотерейной ставки;
тип продаваемого билета.
{
"requestSign": 0,
"price": 15000,
"soldTicketType": 2
}Запрос на регистрацию билетов
/api/playReceipt:Если в чеке есть несколько билетов, то на каждый билет отправляется свой отдельный запрос последовательно.
preferredDrawNumberуказывается "0";soldTicketTypeзаполняется значениемsoldTicketType =2;содержимое штрихкода с номером купона передается в поле
barcode;поле
versionзаполняется значениемversion=2;поля
playerInfoIdиplayerInfoне заполняются или отсутствуют.
{
"terminalId": {{teminal}},
"requestTime": 1693470840,
"externalTransactionId": 1633477859,
"gameId": 7103,
"drawsNumber": 1,
"betFlags": 1,
"priceRequested": 15000,
"preferredDrawNumber": 0,
"tz": "+03",
"version": 2,
"barcode": "LC07103999990020652541",
"soldTicketType": 2
}Ответ на запрос
/api/playReceipt:
{
"requestSign": 0,
"transactionFlags": 2,
"ticketRegistrationTime": 1695648778000,
"firstDrawId": 1671,
"lastDrawId": 1671,
"firstDrawTime": 1695736800000,
"ticketNumber": 1,
"ticketId": 5064008146,
"priceReturned": 15000,
"minColumnPrice": 15000,
"columnsNumber": 1,
"betBingo": "03#27#37#58#76#05#43#55#65#82#17#28#38#66#77*18#35#42#67#71#25#33#48#52#86#02#10#20#70#80",
"barcodePregen": "07103999990020652541",
"receipt": "зашифрованный текст квитанции"
}Настройка
Настройка сервера лотереи и настройки плагина Столото на сервере SetCentrum/SetRetail10 описаны в статьях: