Описание
Ритейлеры, обслуживающиеся Системой быстрых платежей, могут предлагать своим покупателям оплатить чеки через QR-код. Взаимодействие банка и кассы УКМ 4 происходит через специальный сервер – Универсальный интегратор. Универсальный интегратор передает сведения о счете, выставленном кассой, в банковскую систему, а она, в свою очередь, взаимодействует с Системой быстрых платежей и фиксирует сведения о транзакции, статус которой курируется Универсальным интегратором. В связи с тем, что считывать QR-код приходится устройством покупателя (например, камерой мобильного телефона) с изображения на экране, чаще всего этот вид оплаты предлагается на киосках.
На текущий момент, QR-оплата через СБП реализована благодаря сервису, предоставленному АО "Райффайзенбанк", АО "Газпромбанк" и АО "Банк Русский Стандарт", однако, оплачивать чеки по QR-коду могут покупатели-клиенты любого банка. Функционал поддерживает следующие операции:
- оплата через QR-код (в том числе, динамический);
- возврат товара, оплаченного через QR-код, и, соответственно QR-оплаты.
Для удобства работы на различных устройствах, QR-код может выводиться в следующих форматах на выбор:
Экран киоска УКМ 4 | Графический дисплей покупателя + касса УКМ-клиент или touch-касса Lillo | Чековая лента |
---|---|---|
В зависимости от модели дисплея покупателя и типа кассы:
или: Примечание. Вывод QR-кода на консоль покупателя требует активации параметра Выводить QR-коды в настройках соответствующей консоли покупателя (раздел Настройка сервера и оборудования – Оборудование ККМ). |
Если оплата по QR-коду не производится в течение очень длительного времени, изображение QR-кода (равно как и запрос на оплату) аннулируется, согласно установленному тайм-ауту.
Продажа
На практике, оплата чека продажи через QR-код выглядит следующим образом:
Касса УКМ-клиент | Touch-касса Lillo | Киоск УКМ 4 |
---|---|---|
1. На подытоге, покупатель выбирает способ оплаты чека через QR-код: | ||
2. В зависимости от настроек, кассовая программа выводит QR-код на экран дисплея покупателя (при пользовании кассой) / экран киоска (при пользовании киоском): | ||
либо на чековую ленту (в случае, если вывод на экран невозможен): | ||
3. В ожидании пока покупатель считает QR-код, касса/киоск демонстрирует приведенное ниже сообщение. На данном этапе операцию QR-оплаты можно прервать, воспользовавшись кнопкой Отменить: | ||
4. Как только покупатель считает QR-код на своем устройстве и произведет оплату, чек завершится штатным образом: | ||
Возврат
Возврат средств, списанных по QR-коду через СБП, производится только при оформлении возврата по чеку. Операция возврата недоступна на киоске.
Касса УКМ-клиент | Touch-касса Lillo |
---|---|
В чеке возврата оплата через СБП фигурирует в числе средств оплаты из чека продажи: | |
При выборе данного средства оплаты, чек возврата завершается штатным образом: | |
Настройка
Для организации оплаты по QR-коду, необходимо выполнить несколько групп настроек.
Предварительные условия
1. Подключение QR Pay подразумевает увеличение технических требований в серверу УКМ 4, в частности, установку выделенного Linux-сервера, адрес которого прописывается в параметрах магазина. По вопросам развертывания сервера обращайтесь к команде техподдержки УКМ 4. Помимо этого, необходимо убедиться, что используется версия УКМ 4 не ниже 102 и в качестве профиля печатных форм установлено значение Сервис Плюс. При условии выбранного профиля печатных форм Сервис плюс, при переходе к оплате чека по QR, касса напечатает QR-код. Затем касса выждет таймаут, заданный в параметре operation_wait_timeout. В это время покупатель должен успеть считать QR-код для оплаты через приложение банка на телефоне. Если он успеет сделать это в отведенное время, то касса печатает чек с видом оплаты "QR-оплата".
2. Корректная работа функционала, разумеется, требует специфических настроек (данных для внесения в базу данных Универсального интегратора) на стороне банковской системы, в рамках интеграции с которой используется функция QR-оплаты. За этими настройками (ключами и сертификатами) необходимо обратиться к представителям соответствующего банка. За примером заполнения базы данных тестовыми данными нужно обратиться к команде техподдержки продукта.
Если указанные условия выполнены, то необходимо перейти к установке и настройке специального сервера – Универсальный интегратор, через который обрабатываются все QR-платежи в УКМ 4. Затем выполняются настройки на кассовом сервере УКМ 4.
Установка и настройка Универсального интегратора
Технические требования
- двухъядерный процессор 2 ГГц;
- системная память 4 GiB RAM;
- 25 Гб свободного пространства на жестком диске.
В самом магазине сервер рекомендуется располагать как можно ближе к кассам, во избежание проблем со связью.
Дистрибутив
Актуальный образ выложен на FTP с последней версией УКМ 4.
Для стабильной работы потребуется последняя актуальная версия интегратора.
Внимание! На данный момент, релизной версией интегратора является 107_v.2.4. Необходим файл qrpay-update.sh для автоматического обновления до версии 108_v.2.5.
Инсталляция и обновление
Инсталлятор
При установке дистрибутива необходимо выбрать из списка доступных программ 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
Настройки демона
В базе данных демона (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 – да);
- op_type – тип операции:
- 2 – оплата;
- 3 – проверка статуса оплаты;
- 4 – возврат;
- 7 – отмена;
- op_result – результат операции:
- неизвестно – 1 (не получено никакого ответа);
- успешно – 0;
- ошибка – 4.
После прописывания в базе данных демона (qrraiffd), необходимо его перезапустить следующими командами:
sudo systemctl stop qrraiffd
sudo systemctl start qrraiffd
RabbitMQ перезапускать не надо.
Как проверить версию
/usr/local/qrpay/qrpayd --version
Как снимать логи
Нужно подставить дату, за которую требуется получить лог. Полученный файл и есть лог, его и нужно прислать:
journalctl --since "2022-12-24 00:00:00" --until "2022-12-24 23:59:59" -a -u qrpayd.service > /home/ukmclient/qrpayd.log
Метки протоколирования
RabbitMQ – Работа с сервером RabbitMQ.
QR_PAYMENT – Средство оплаты "QR-оплата".
Настройки на кассовом сервере УКМ 4
Для корректной работы также необходимо добавление нового сервера авторизации и вида оплаты.
1. Добавление сервера авторизации QR оплата происходит стандартным образом на странице Параметры магазина и настройка операций – Интеграция – Серверы авторизации (вкладка слева), закладка Оплаты:
В настройках требуется указать следующие обязательные для заполнения параметры:
Название – наименование сервера авторизации подставляется системой автоматически при его добавлении, однако его можно изменить вручную.
Таймаут ожидания ответа, сек – время ожидания ответа от сервера указывается вручную, в секундах. Минимальное значение (оно же – значение по умолчанию) составляет 310 секунд. Так как касса является конечным звеном в цепочке узлов, участвующих в процессе проведения транзакции оплаты, значение данного таймаута ожидания должно быть строго больше, чем значение таймаута ожидания ответа от процессинга банка-участника СБП (на 10 секунд больше, чем значение operation_wait_timeout).
Настройки нужно сохранить.
2. Вид оплаты для сервера авторизации QR оплата создается стандартным образом.
Специфическими являются только следующие настройки:
Модуль оплаты – обязательное для заполнения текстовое поле для указания конкретного провайдера, предоставляющего услуги QR-оплаты (его название можно узнать у команды техподдержки УКМ 4).
Сканировать QR-код покупателя – опция для QR-оплат, требующих сканирования QR-кода с мобильного приложения покупателя. Для вывода кода на экран кассы/консоли покупателя/в чек, данный параметр необходимо отключить.
Параметры нужно сохранить.
3. Также необходимо в настройках магазина указать путь для параметра RabbitMQ сервер:
Настройки нужно сохранить.
Проверка многоразовой платёжной ссылки СБП (только для банков Райффайзен и Русский Стандарт)
Для осуществления QR-оплат, некоторые банки используют многоразовую платёжную ссылку СБП.
Считав сгенерированный QR-код, можно проверить соответствие считанной ссылки и ссылки в настройках Универсального интегратора, через который осуществляется взаимодействие с УКМ 4.
Проверка ссылки является специальной кассовой операцией и настраивается в разделе кассового сервера по адресу: Настройка сервера и оборудования – Оборудование ККМ – Раскладки клавиатуры (вкладка слева):
Кликнув на название используемой раскладки, можно перейти к окну с ее настройками, где необходимо выбрать клавишу, которая будет переводить кассу в режим инвентаризации, и в строке Функциональный под раскладкой нажать кнопку Поиск:
В появившемся окне нужно ввести (целиком или частично) название кассовой операции QR-оплата - проверка статической ссылки и выбрать верное соответствие из выпадающего списка:
Откроется следующее окно:
В данном окне можно настроить права на пользование кассовой операцией, после чего необходимо кликнуть Применить.
В окне с раскладкой нужно нажать кнопку Сохранить:
В окне подтверждения выполненных настроек следует выбрать опцию Да:
На touch-кассе Lillo режим инвентаризации вызывается из интерфейса самой кассы:
На кассе УКМ 4 проверка статической ссылки происходит следующим образом:
Касса УКМ-клиент | Touch-касса Lillo |
---|---|
1. Операция проверки ссылки вызывается нажатием специально запрограммированной клавиши, после чего открывается следующее диалоговое окно: 2. Как только QR-код будет считан сканером, появится сообщение о результатах проверки: либо: | 1. Операция проверки ссылки вызывается нажатием специальной кнопки: 2. Откроется следующее диалоговое окно: 3. Как только QR-код будет считан сканером, появится сообщение о результатах проверки: либо: |
Привязка платежной ссылки к юр.лицу/магазину/кассе (только для банка Райффайзен)
Как правило, каждая платежная ссылка, содержащиеся в QR-коде, привязываются к определенному юр. лицу, магазину и кассе путем механического ввода данных об этой ссылке оператором на кассе. Райффайзенбанк решает проблемы промышленного тиражирования кассовых платёжных ссылок в крупных торговых сетях проще: подготовкой наклеек с QR-кодом, содержащих "пустую" кассовую ссылку, ещё не соотнесенную с конкретным клиентом (юр.лицом/магазином/кассой). Сначала такие наклейки размещаются на кассах в торговом зале, а затем с помощью отчета Проверка статического QR-кода через Универсальный интегратор осуществляется запрос, который привязывает платежную ссылку, содержащуюся в каждом конкретном QR-коде, к кассе, на которой она размещена, а также к конкретному юр.лицу и магазину.
При этом, может сложиться ситуация, когда в рамках одного магазина одновременно имеются как уже привязанные платежные ссылки, так и "пустые". В таком случае, отчет Проверка статического QR-кода будет работать следующим образом:
1. Если платежная ссылка уже привязана к кассе, то произойдет описанная выше штатная процедура проверки платежной ссылки СБП.
2. Если платежная ссылка еще не закреплена за определенной кассой, Универсальный интегратор выполнит запрос на привязку ссылки и сохранит результат данного запроса в таблице конфигурации. На кассу вернется сообщение о том, что кассовая ссылка успешно привязана.