Оглавление |
---|
Отображение дочерних |
---|
Описание
Якорь | ||||
---|---|---|---|---|
|
На текущий момент, QR-оплата через СБП реализована благодаря сервисусервисам, предоставленномупредоставленным АО "Райффайзенбанк", АО "Газпромбанк" и АО "Банк Русский Стандарт", также доступны QR-оплаты через СБП, осуществляемые по протоколу Inpas, однако , оплачивать чеки по QR-коду могут покупатели-клиенты любого банка. Функционал поддерживает следующие операции:
- оплата через QR-код (в том числе, динамический);
- возврат товара, оплаченного через QR-код, (и, соответственно, возврат QR-оплаты).
Якорь | ||||
---|---|---|---|---|
|
На практике, оплата через QR-код выглядит следующим образом:
...
Информация в личном кабинете банковского приложения появляется по факту прохождения платежа, то есть, даже если кассовая система по каким-то причинам не получит данные об успешной QR-оплате от банковского сервиса, платеж будет зачислен и отображен в личном кабинете банка в любом случае.
Возврат
Возврат оплаты через QR-код, как Запись реквизитов QR-оплаты производится через запятую в поле qrRequisites конвертера Экспорт XML. Эти данные можно использовать для сверки между зарегистрированными оплатами СБП в торговой сети и оплатами в предоставляемой банком выписке.
Якорь | ||||
---|---|---|---|---|
|
Возврат оплаты через QR-код, как правило, осуществляется при оформлении возврата по чеку.
...
Клавиатурная касса | Touch-касса |
---|---|
1. На подытоге, кассир выбирает способ оплаты чека через QR-код: | |
2. В зависимости от настроек, кассовая программа выводит QR-код на экран дисплея покупателя: | |
либо на чековую ленту: либо одновременно на чековую ленту и на дисплей покупателя. 3. В ожидании пока покупатель считает QR-код, касса демонстрирует следующее сообщение: | |
4. Как только покупатель считает QR-код на своем устройстве и произведет оплату, чек завершится штатным образом: | |
Якорь |
---|
...
|
...
|
...
При QR-оплате через Банк Русский Стандарт, используется кассовая платёжная ссылка СБП. Считав сгенерированный QR-код, можно проверить соответствие считанной ссылки и ссылки в настройках универсального интегратора, через который осуществляется взаимодействие с УКМ 5.
На кассе УКМ 5 проверка статической ссылки происходит следующим образом:
...
...
...
2. В меню отчетов необходимо выбрать опцию Проверка статического QR-кода:
...
...
...
...
...
4. Как только QR-код будет считан сканером, появится сообщение о результатах проверки:
...
либо:
...
либо:
...
5. Если проверку прервать нажатием кнопки Отмена, то касса отобразит соответствующее оповещение:
Настройки
Для настройки оплаты QR-кодом необходимо:
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-коду можно передавать в Универсальный интегратор значение поля Код ЦФО.
Операция проверки кассовой платежной ссылки СБП (для Банка Русский Стандарт) требует следующих настроек:
1. В конфигурационном файле reports.conf (services\reports\reports.conf) необходимо разместить следующую строку:
Блок кода | ||||
---|---|---|---|---|
| ||||
# ,{ include file("conf/services/reports/qr_checker.conf")} # Проверка статического QR-кода |
2. В разделе services\reports нужно разместить конфигурационный файл qr_checker.conf:
...
language | scala |
---|---|
theme | RDark |
...
Оплата по кассовой платежной ссылке
Некоторыми из наших клиентов справедливо подмечено, что оплата с помощью СБП по динамическим 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-оплатыВсе выполненные настройки необходимо сохранить.