Оглавление |
---|
Отображение дочерних |
---|
Описание
Якорь | ||||
---|---|---|---|---|
|
На текущий момент, QR-оплата через СБП реализована благодаря сервисусервисам, предоставленномупредоставленным АО "Райффайзенбанк", АО "Газпромбанк" и АО "Банк Русский Стандарт", также доступны QR-оплаты через СБП, осуществляемые по протоколу Inpas, однако , оплачивать чеки по QR-коду могут покупатели-клиенты любого банка. Функционал поддерживает следующие операции:
- оплата через QR-код (в том числе, динамический);
- возврат товара, оплаченного через QR-код, (и, соответственно, возврат QR-оплаты).
Якорь | ||||
---|---|---|---|---|
|
На практике, оплата через QR-код выглядит следующим образом:
...
Клавиатурная касса | Touch-касса |
---|---|
1. На подытоге, кассир выбирает способ оплаты чека через QR-код: | |
2. В зависимости от настроек, кассовая программа выводит QR-код на экран дисплея покупателя: | |
либо на чековую ленту: либо одновременно на чековую ленту и на дисплей покупателя. 3. В ожидании пока покупатель считает QR-код, касса демонстрирует следующее сообщение: | |
4. Как только покупатель считает QR-код на своем устройстве и произведет оплату, чек завершится штатным образом: | |
Якорь |
---|
...
|
...
|
...
При QR-оплате через Банк Русский Стандарт, используется кассовая платёжная ссылка СБП. Считав сгенерированный QR-код, можно проверить соответствие считанной ссылки и ссылки в настройках универсального интегратора, через который осуществляется взаимодействие с УКМ 5.
На кассе УКМ 5 проверка статической ссылки происходит следующим образом:
...
...
...
2. В меню отчетов необходимо выбрать опцию Проверка статического QR-кода:
...
...
...
...
...
4. Как только QR-код будет считан сканером, появится сообщение о результатах проверки:
...
либо:
...
либо:
...
5. Если проверку прервать нажатием кнопки Отмена, то касса отобразит соответствующее оповещение:
Настройки
Для организации оплаты по QR-коду, необходимо выполнить несколько групп настроек.
Установка и настройка Универсального интегратора
Все QR-платежи на кассе УКМ 5 обрабатываются через специальный сервер – Универсальный интегратор, который требует отдельной установки и настройки.
Технические требования
- двухъядерный процессор 2 ГГц;
- системная память 4 GiB RAM;
- 25 Гб свободного пространства на жестком диске.
В самом магазине сервер рекомендуется располагать как можно ближе к кассам, во избежание проблем со связью.
Дистрибутив
Необходимо установить сервер. Образ выложен на FTP в директории _УИ\2.1 ПАШ, ПРОПИШЫ ИМ НАХЕР ПРЯМО ТОЧНЫЙ АДРЕС СТРОКОЙ
Инсталлятор
При установке образа iso необходимо выбрать пункт New Intergator.
Если виртуальная машина после разворачивания получит сетевое имя, то данное имя надо прописать как 127.0.0.1 в /etc/hosts.
Примечание. Сетевое имя вручную менять нельзя! При этом сбрасываются настройки у RabbitMQ и ничего не работает!
База данных – MariaDB.
Логины/пароли
- Пользователь системы: qrpay/xxxxxx.
- Пользователь MariaDB: qrpay@localhost/xxxxxx.
- Выдать права для изменения данных БД:
...
Местоположение интегратора: /usr/local/qrpay.
Настройки демона
В базе данных демона (qrpayd) есть таблица qrraiffd_configuration, из которой берутся следующие настройки:
- key – ключ авторизации;
- merchant_id – идентификатор зарегистрированного партнёра в СБП;
- operation_wait_timeout – время в секундах, в течение которого происходит опрос статуса операции (подтверждена оплата или возврат): сколько ждать, пока покупатель произведет оплату;
- qrpay_timeout – время (в мс) ожидания ответа от сервера банка: сетевой таймаут;
- qrpay_url – адрес отправки запросов (адрес в qrpay_url должен быть вида https://________raiffeisen.ru/api);
- request_period – период опроса статуса операции (в секундах): с какой частотой универсальный интегратор запрашивает статус оплаты по QR-коду (прошла или нет);
- write_log_to_file – писать ли лог (0 – нет; 1 – да).
Лог интегратора можно посмотреть, выполнив команду sudo journalctl -f -u qrpayd.service.
Настройки на кассовом сервере УКМ 5
1. Перейти на кассовом сервере по адресу: Магазин – Типы касс, выбрать тип кассы и нажать кнопку Настройки:
В разделе subsystems конфигурационного файла mintukm.conf (applications\mintukm.conf) нужно добавить следующую строку и сохранить изменения:
Блок кода | ||||
---|---|---|---|---|
| ||||
{ include file("conf/services/universal_integrator.conf") } |
2. Необходимо убедиться в наличии файла universal_integrator.conf в разделе services иерархического древа:
...
0 – QR-код будет выведен на экран (рекомендовано для киоска/кассы самообслуживания);
1 – QR-код будет выведен на чековую ленту;
2 – QR-код одновременно отобразится на экране (рекомендовано для киоска/кассы самообслуживания) и распечатается на чековой ленте;
3 – QR-код будет отображен на дисплее покупателя (рекомендовано для обычных касс в комплекте с дисплеем покупателя).
3. Нужно также проверить, присутствует ли файл payment_qrpay_ui.conf в разделе services\payment:
4. Следует добавить в конфигурационный файл payment.conf (services\payment\payment.conf) приведенную ниже строку, а затем сохранить изменения:
Блок кода | ||||
---|---|---|---|---|
| ||||
{ include file("conf/services/payment/payment_qrpay_ui.conf") } |
При оплате по QR-коду можно передавать в Универсальный интегратор значение поля Код ЦФО.
5. В конфигурационном файле payment_qrpay_ui.conf по адресу: services\payment\payment_qrpay_ui.conf хранятся настройки доступа к Универсальному интегратору, а также прочие параметры:
ПАШ, МЕНЯ ПУГАЕТ ФОРМУЛИРОВКА В ПИСЬМЕ ОТ АБ, О ТОМ, ЧТО ИНСТРУКЦИЯ ДОЛЖНА СОДЕРЖАТЬ:
- Установку сервера УИ (пошагово начиная с нуля)
- Запрет на изменение host name с пояснением, почему нельзя менять - это про это: Сетевое имя вручную менять нельзя! При этом сбрасываются настройки у RabbitMQ и ничего не работает!
- Подключение УКМ5 к УИ
- Конфигурирование УИ для каждого (!) поддержанного банка - это только те части, которые в payment_qrpay_ui.conf для каждого банка раскомментировать надо или еще что-то есть?
У НАС РАЗВЕ ВСЕ ПЕРЕЧИСЛЕННОЕ ТУТ ОПИСАНО?
Дополнительные настройки для киосков и касс самообслуживания
В дополнение к перечисленным выше настройкам, обязательным для любых касс, для касс самообслуживания УКМ 5 выполняется специфичная настройка, отвечающая за отображение на экране анимации при оплате по QR-коду.
Настройка выполняется в конфигурационном файле sale.conf (applications\sale\sale.conf):
В раздел bl данного файла нужно добавить следующий фрагмент, после чего сохранить файл:
Блок кода | ||||
---|---|---|---|---|
| ||||
kiosk2: {
negativeSoundEffects = false #приоритет 1
voiceSoundEffects = true #приоритет 2
positiveEffect = true
positiveAnimationTimer=[500, 1000, 500]
extendedRecognition = true # Расширеное распознавание, доступно при наличие лицензии киоск2
isAnimatedIcons = true
emptyReceiptSlideShow = [scanBarCode, vision, QRPay]
useVideoSelfie = true
addItemMultiplier = 1.5
} |
Проверка кассовой платежной ссылки
Операция проверки кассовой платежной ссылки СБП (для Банка Русский Стандарт) требует следующих настроек:
1. В конфигурационном файле reports.conf (services\reports\reports.conf) необходимо разместить следующую строку:
Блок кода | ||||
---|---|---|---|---|
| ||||
# ,{ include file("conf/services/reports/qr_checker.conf")} # Проверка статического QR-кода |
2. В разделе services\reports нужно разместить конфигурационный файл qr_checker.conf:
...
Оплата по кассовой платежной ссылке
Некоторыми из наших клиентов справедливо подмечено, что оплата с помощью СБП по динамическим QR-кодам иногда может затрудняться проблемами с демонстрацией этого QR-кода покупателю, так как не на каждой кассе есть возможность вывести QR-код на экран, а в печатном виде он может иметь дефекты.
Проблему корректного отображения QR-кодов можно решить с помощью кассовой платёжной ссылки СБП. Такой QR-код присваивается непосредственно кассе, и для совершения оплаты касса активизирует его с нужной суммой. После проведения оплаты данный QR-код блокируется до следующей оплаты.
Так как сам QR-код не изменяется, то его изображение можно распечатать и разместить на кассе в виде наклейки или NFC-метки. Вдобавок к этому, по просьбе к команде техподдержки продукта, можно также настроить вывод такого QR-кода на экран покупателя, чековую ленту или экран киоска, при условии их наличия в магазине.
Некоторые банки имеют общий процессинговый центр для обработки платежей по динамическим QR-кодам и по кассовым платёжным ссылкам СБП. Получить кассовые платёжные ссылки для каждой кассы торговой сети может только юридическое лицо в клиентском приложении банка.
На практике, сценарий оплаты по кассовой ссылке СБП выглядит следующим образом:
- Кассир формирует чек.
- Кассир переходит в режим оплаты.
- Кассир уточняет у покупателя способ оплаты.
- Покупатель сообщает, что будет оплачивать покупку с использованием QR-кода.
- Кассир выбирает вид оплаты по QR-коду и, при необходимости, изменяет сумму оплаты.
- Касса отправляет запрос в Универсальный интегратор.
- Универсальный интегратор отправляет запрос на создание заказа в процессинг банка.
- Если процессинг банка вернул положительный ответ, Универсальный интегратор возвращает этот ответ на кассу.
- Покупатель считывает QR-код с наклейки мобильным приложением банка.
- Касса выводит кассиру диалоговое окно с просьбой подтвердить, что покупатель успешно сканировал QR-код и выполнил оплату.
- Кассир подтверждает сканирование QR-кода и оплату.
- Касса отправляет запрос в Универсальный интегратор.
- Универсальный интегратор отправляет запрос на получение статуса заказа в процессинг банка.
- Процессинг банка возвращает ответ в Универсальный интегратор.
- Универсальный интегратор возвращает ответ на кассу.
- Касса получает ответ о статусе проведения платежа: если получено подтверждение ответа, касса добавляет QR-оплату в чек.
- Касса закрывает чек.
При получении отрицательного ответа от любой из систем или в случае невозможности выполнить QR-оплату на стороне покупателя, платеж отменяется и кассир предлагает клиенту выбрать другой способ оплаты чека.
Якорь linkcheck linkcheck
Проверка платёжной ссылки СБП (только для банков Райффайзен, Газпром, Русский Стандарт)
linkcheck | |
linkcheck |
Для осуществления QR-оплат, некоторые банки используют многоразовую платёжную ссылку СБП.
Считав сгенерированный QR-код, можно проверить соответствие считанной ссылки и ссылки в настройках Универсального интегратора, через который осуществляется взаимодействие с УКМ 5.
На кассе УКМ 5 проверка такой ссылки происходит следующим образом:
Клавиатурная касса | Touch-касса |
---|---|
1. Проверка платежной ссылки осуществляется через меню отчетов кассы: | |
2. В меню отчетов необходимо выбрать опцию Проверка статического QR-кода: | |
3. Для проверки QR-кода, его необходимо считать сканером: | |
4. Как только QR-код будет считан сканером, появится сообщение о результатах проверки: | |
либо: | либо: |
5. Если проверку прервать нажатием кнопки Отмена, то касса отобразит соответствующее оповещение: |
Якорь | ||||
---|---|---|---|---|
|
Как правило, каждая платежная ссылка, содержащаяся в QR-коде, привязываются к определенному юр. лицу, магазину и кассе путем механического ввода данных об этой ссылке оператором на кассе. Райффайзенбанк решает проблемы промышленного тиражирования кассовых платёжных ссылок в крупных торговых сетях проще: подготовкой наклеек с QR-кодом, содержащих "пустую" кассовую ссылку, ещё не соотнесенную с конкретным клиентом (юр.лицом/магазином/кассой). Сначала такие наклейки размещаются на кассах в торговом зале, а затем с помощью отчета Проверка статического QR-кода через Универсальный интегратор осуществляется запрос, который привязывает платежную ссылку, содержащуюся в каждом конкретном QR-коде, к кассе, на которой она размещена, а также к конкретному юр.лицу и магазину.
При этом, может сложиться ситуация, когда в рамках одного магазина одновременно имеются как уже привязанные платежные ссылки, так и "пустые". В таком случае, отчет Проверка статического QR-кода будет работать следующим образом:
1. Если платежная ссылка уже привязана к кассе, то произойдет описанная выше штатная процедура проверки платежной ссылки СБП.
2. Если платежная ссылка еще не закреплена за определенной кассой, Универсальный интегратор выполнит запрос на привязку ссылки и сохранит результат данного запроса в таблице конфигурации. На кассу вернется сообщение о том, что кассовая ссылка успешно привязана.
Настройки
Для организации оплаты по QR-коду, необходимо выполнить несколько групп настроек.
Предварительные условия
Корректная работа функционала требует специфических настроек (данных для внесения в базу данных Универсального интегратора) на стороне банковской системы, в рамках интеграции с которой используется функция QR-оплаты. За этими настройками (ключами и сертификатами) необходимо обратиться к представителям соответствующего банка. За примером заполнения базы данных тестовыми данными нужно обратиться к команде техподдержки продукта.
Если данное условие выполнено, то необходимо перейти к установке и настройке специального сервера – Универсальный интегратор, через который обрабатываются все QR-платежи в УКМ 5. Затем выполняются настройки на кассовом сервере УКМ 5.
Установка и настройка Универсального интегратора
Технические требования
- двухъядерный процессор 2 ГГц;
- системная память 4 GiB RAM;
- 25 Гб свободного пространства на жестком диске.
В самом магазине сервер рекомендуется располагать как можно ближе к кассам, во избежание проблем со связью.
Дистрибутив
Актуальный образ выложен на FTP с последней версией УКМ 4.
Для стабильной работы потребуется последняя актуальная версия интегратора.
Актуальная версия
Блок кода | ||||
---|---|---|---|---|
| ||||
ukm_integrator 111 master, 77dcbba |
Как проверить версию
Блок кода |
---|
/usr/local/qrpay/qrpayd --version |
Инсталляция и обновление
Инсталлятор
При установке дистрибутива необходимо выбрать из списка доступных программ Universal integrator:
Если виртуальная машина после разворачивания получит сетевое имя, то данное имя надо прописать как 127.0.0.1 в /etc/hosts.
Примечание. Сетевое имя вручную менять нельзя! При этом сбрасываются настройки у RabbitMQ и ничего не работает! При установке Универсального интегратора конфигурационные файлы вспомогательного ПО Универсального интегратора привязываются к hostname, который будет присвоен при инсталляции, и последующая его смена не изменит этих настроек, что приведёт к неработоспособности Универсального интегратора.
В качестве базы данных используется MariaDB.
Обновление
Файл qrpay-update.sh необходимо поместить на сервер Универсального интегратора и дать ему права на исполнение:
Блок кода | ||||
---|---|---|---|---|
| ||||
chmod +x ./qrpay-update.sh |
Затем нужно выполнить установку:
Блок кода | ||||
---|---|---|---|---|
| ||||
sudo systemctl stop qrpayd.service
sudo ./qrpay-update.sh
sudo systemctl start qrpayd.service |
Логины/пароли
- Пользователь системы: qrpay/xxxxxx.
- Пользователь MariaDB: qrpay@localhost/xxxxxx.
- Пользователи RabbitMQ:
- admin/admin для администрирования;
- ukm/xxxxxx для доступа с кассы.
Веб от RabbitMQ
<ip>:15672
Rabbit логин/пароль: admin/admin
Как снимать логи
Нужно подставить дату, за которую требуется получить лог. Полученный файл и есть лог, его и нужно прислать:
Блок кода |
---|
journalctl --since "2022-12-24 00:00:00" --until "2022-12-24 23:59:59" -a -u qrpayd.service > /home/ukmclient/qrpayd.log |
Индивидуальные настройки Универсального интегратора для банков
Отображение дочерних |
---|
Якорь | ||||
---|---|---|---|---|
|
1. Перейти на кассовом сервере по адресу: Магазин – Типы касс, выбрать тип кассы и нажать кнопку Настройки:
В разделе subsystems конфигурационного файла mintukm.conf (applications\mintukm.conf) нужно добавить следующую строку и сохранить изменения:
Блок кода | ||||
---|---|---|---|---|
| ||||
{ include file("conf/services/universal_integrator.conf") } |
2. Необходимо убедиться в наличии файла universal_integrator.conf в разделе services иерархического древа:
Примечание. В зависимости от намерения использовать функционал на киосках/кассах самообслуживания или обычных кассах, следует установить подходящее значение для параметра showQRcode в данном конфигурационном файле: Якорь qrwhere qrwhere
0 – QR-код будет выведен на экран (рекомендовано для киоска/кассы самообслуживания);
1 – QR-код будет выведен на чековую ленту;
2 – QR-код одновременно отобразится на экране (рекомендовано для киоска/кассы самообслуживания) и распечатается на чековой ленте;
3 – QR-код будет отображен на дисплее покупателя (рекомендовано для обычных касс в комплекте с дисплеем покупателя).
3. Нужно также проверить, присутствует ли файл payment_qrpay_ui.conf в разделе services\payment. Якорь genset genset
В данном файле следует прописать в качестве значения параметра modulePay то значение, которое указано для конкретного банка, QR-оплату которого вы настраиваете. То же самое касается параметров moduleCancel и subsystem. Например, на скриншоте ниже выполнены настройки для Райффайзенбанка (оплата по динамическому QR):
Примечание. При желании настроить QR-оплату с помощью кассовой платежной ссылки нужно выбирать значения всех параметров с припиской _variable.
Выполненные настройки необходимо сохранить.
Примечание. В случае настройки функционала QR Сбербанк SberPay (customer), помимо выбора значений параметров modulePay, moduleCancel и subsystem, также необходимо установить параметр scanQRCode = true, после чего сохранить файл: Якорь custqr custqr
4. Следует добавить в конфигурационный файл payment.conf (services\payment\payment.conf) приведенную ниже строку, а затем сохранить изменения:
Блок кода | ||||
---|---|---|---|---|
| ||||
{ include file("conf/services/payment/payment_qrpay_ui.conf") } |
При оплате по QR-коду можно передавать в Универсальный интегратор значение поля Код ЦФО.
Дополнительные настройки для киосков и касс самообслуживания
В дополнение к перечисленным выше настройкам, обязательным для любых касс, для касс самообслуживания УКМ 5 выполняется специфичная настройка, отвечающая за отображение на экране анимации при оплате по QR-коду.
Настройка выполняется в конфигурационном файле sale.conf (applications\sale\sale.conf):
В раздел bl данного файла нужно добавить следующий фрагмент, после чего сохранить файл:
Блок кода | ||||
---|---|---|---|---|
| ||||
kiosk2: {
negativeSoundEffects = false #приоритет 1
voiceSoundEffects = true #приоритет 2
positiveEffect = true
positiveAnimationTimer=[500, 1000, 500]
extendedRecognition = true # Расширенное распознавание, доступно при наличие лицензии киоск2
isAnimatedIcons = true
emptyReceiptSlideShow = [scanBarCode, vision, QRPay]
useVideoSelfie = true
addItemMultiplier = 1.5
} |
Якорь linkset linkset
Проверка многоразовой платёжной ссылки СБП
linkset | |
linkset |
Функционал проверки платежной ссылки СБП (для банков Райффайзен, Газпром и Русский Стандарт) требует следующих настроек:
1. В конфигурационном файле reports.conf (services\reports\reports.conf) необходимо разместить следующую строку:
Блок кода | ||||
---|---|---|---|---|
| ||||
# ,{ include file("conf/services/reports/qr_checker.conf")} # Проверка статического QR-кода |
2. В разделе services\reports нужно разместить конфигурационный файл qr_checker.conf. Он имеет несколько разный вид, в зависимости от конкретного банка: параметры modulePay, moduleCancel и subsystem в данном файле следует выставить идентичными значениям этих же параметров в настройках QR-оплаты:
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
# QR-оплаты. Операция "Проверка статического QR-кода"
# Настраивать так же, как и QR-оплату
#
{
"reports.qr_checker": {
params : {
num = 4 # Последовательность отображения отчетов в Приложении "Отчеты".
# В начале меню со списком отчётов отображаются отчёты с меньшими значениями параметра "num".
name = "Проверка статического QR-кода" # Название отчёта в меню "Отчёты"
description = "Проверка соответствия наклеенного на кассе QR-кода с тем, что для этой кассы настроен" # Краткое описание отчёта в этом же меню.
url = "amqp://ukm:xxxxxx@192.168.25.93"
modulePay = "servplus.qrgazprom_variable.payment"
moduleCancel = "servplus.qrgazprom_variable.cancel"
subsystem = "qrgazprom_variable"
amqp = "amq.topic"
amqpTimeout = 10 second
}
}
} |
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
# QR-оплаты. Операция "Проверка статического QR-кода"
# Настраивать так же, как и QR-оплату
#
{
"reports.qr_checker": {
params : {
num = 4 # Последовательность отображения отчетов в Приложении "Отчеты".
# В начале меню со списком отчётов отображаются отчёты с меньшими значениями параметра "num".
name = "Проверка статического QR-кода" # Название отчёта в меню "Отчёты"
description = "Проверка соответствия наклеенного на кассе QR-кода с тем, что для этой кассы настроен" # Краткое описание отчёта в этом же меню.
url = "amqp://ukm:xxxxxx@192.168.25.93"
modulePay = "servplus.qrrsb_variable.payment"
moduleCancel = "servplus.qrrsb_variable.cancel"
subsystem = "qrrsb_variable"
amqp = "amq.topic"
amqpTimeout = 10 second
}
}
} |
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
# QR-оплаты. Операция "Проверка статического QR-кода" # Настраивать так же, как и QR-оплату # { "reports.qr_checker": { params : { num = 4 # Последовательность отображения отчетов в Приложении "Отчеты". # В начале меню со списком отчётов отображаются отчёты с меньшими значениями параметра "num". name = "Проверка статического QR-кода" # Название отчёта в меню "Отчёты" description = "Проверка соответствия наклеенного на кассе QR-кода с тем, что для этой кассы настроен" # Краткое описание отчёта в этом же меню. url = "amqp://ukm:xxxxxx@192.168.25.93113" modulePay = "servplus.qrrsbqrraiffd_variable.payment" moduleCancel = "servplus.qrrsbqrraiffd_variable.cancel" subsystem = "qrrsbqrraiffd_variable" amqp = "amq.topic" amqpTimeout = 1050 second } } } |
Параметры в данном файле следует выставить аналогично настройкам QR-оплатыВсе выполненные настройки необходимо сохранить.