Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Отображение дочерних

Описание

Якорь
integr
integr
Ритейлеры, обслуживающиеся Системой быстрых платежей, могут предлагать своим покупателям оплатить чеки через QR-код. Взаимодействие банка и кассы УКМ 5 происходит через специальный сервер – Универсальный интегратор. Универсальный интегратор передает сведения о счете, выставленном кассой, в банковскую систему, а она, в свою очередь, взаимодействует с Системой быстрых платежей и фиксирует сведения о транзакции, статус которой курируется Универсальным интегратором. В связи с тем, что считывать QR-код приходится устройством покупателя (например, камерой мобильного телефона) с изображения на экране, чаще всего этот вид оплаты предлагается на киосках и кассах самообслуживания.

На текущий момент, QR-оплата через СБП реализована благодаря сервисусервисам, предоставленномупредоставленным АО "Райффайзенбанк", АО "Газпромбанк" и АО "Банк Русский Стандарт", также доступны QR-оплаты через СБП, осуществляемые по протоколу Inpas, однако , оплачивать чеки по QR-коду могут покупатели-клиенты любого банка. Функционал поддерживает следующие операции:

  • оплата через QR-код (в том числе, динамический);
  • возврат товара, оплаченного через QR-код, (и, соответственно, возврат QR-оплаты).

Якорь
pay
pay
Оплата

На практике, оплата через QR-код выглядит следующим образом:

...

Клавиатурная кассаTouch-касса
1. На подытоге, кассир выбирает способ оплаты чека через QR-код:

2. В зависимости от настроек, кассовая программа выводит QR-код на экран дисплея покупателя:

либо на чековую ленту:

либо одновременно на чековую ленту и на дисплей покупателя.

3. В ожидании пока покупатель считает QR-код, касса демонстрирует следующее сообщение:

4. Как только покупатель считает QR-код на своем устройстве и произведет оплату, чек завершится штатным образом:

Якорь

...

paybylink

...

paybylink

...

При QR-оплате через Банк Русский Стандарт, используется кассовая платёжная ссылка СБП. Считав сгенерированный QR-код, можно проверить соответствие считанной ссылки и ссылки в настройках универсального интегратора, через который осуществляется взаимодействие с УКМ 5.

На кассе УКМ 5 проверка статической ссылки происходит следующим образом:

...

Image Removed

...

Image Removed

...

2. В меню отчетов необходимо выбрать опцию Проверка статического QR-кода:

...

Image Removed

...

Image Removed

...

Image Removed

...

Image Removed

...

4. Как только QR-код будет считан сканером, появится сообщение о результатах проверки: 

...

Image Removed

либо:

Image Removed

...

Image Removed

либо:

Image Removed

...

5. Если проверку прервать нажатием кнопки Отмена, то касса отобразит соответствующее оповещение:

Image Removed

Настройки

Для организации оплаты по 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 – да).

Image Removed

Лог интегратора можно посмотреть, выполнив команду sudo journalctl -f -u qrpayd.service.

Настройки на кассовом сервере УКМ 5

1. Перейти на кассовом сервере по адресу: Магазин – Типы касс, выбрать тип кассы и нажать кнопку Настройки:

Image Removed

В разделе subsystems конфигурационного файла mintukm.conf (applications\mintukm.conf) нужно добавить следующую строку и сохранить изменения:

Блок кода
languagescala
themeRDark
{ include file("conf/services/universal_integrator.conf") }

2. Необходимо убедиться в наличии файла universal_integrator.conf в разделе services иерархического древа:

Image Removed

...

0 – QR-код будет выведен на экран (рекомендовано для киоска/кассы самообслуживания);

1 – QR-код будет выведен на чековую ленту;

2 – QR-код одновременно отобразится на экране (рекомендовано для киоска/кассы самообслуживания) и распечатается на чековой ленте;

3 – QR-код будет отображен на дисплее покупателя (рекомендовано для обычных касс в комплекте с дисплеем покупателя).

3. Нужно также проверить, присутствует ли файл payment_qrpay_ui.conf в разделе services\payment:

Image Removed

4. Следует добавить в конфигурационный файл payment.conf (services\payment\payment.conf) приведенную ниже строку, а затем сохранить изменения:

Блок кода
languagescala
themeRDark
{ include file("conf/services/payment/payment_qrpay_ui.conf") }

При оплате по QR-коду можно передавать в Универсальный интегратор значение поля Код ЦФО.

5. В конфигурационном файле payment_qrpay_ui.conf по адресу: services\payment\payment_qrpay_ui.conf хранятся настройки доступа к Универсальному интегратору, а также прочие параметры:

Image Removed

ПАШ, МЕНЯ ПУГАЕТ ФОРМУЛИРОВКА В ПИСЬМЕ ОТ АБ, О ТОМ, ЧТО ИНСТРУКЦИЯ ДОЛЖНА СОДЕРЖАТЬ:

  • Установку сервера УИ (пошагово начиная с нуля)
  • Запрет на изменение host name с пояснением, почему нельзя менять - это про это: Сетевое имя вручную менять нельзя! При этом сбрасываются настройки у RabbitMQ и ничего не работает!
  • Подключение УКМ5 к УИ
  • Конфигурирование УИ для каждого (!) поддержанного банка - это только те части, которые в payment_qrpay_ui.conf для каждого банка раскомментировать надо или еще что-то есть?

У НАС РАЗВЕ ВСЕ ПЕРЕЧИСЛЕННОЕ ТУТ ОПИСАНО?

Дополнительные настройки для киосков и касс самообслуживания

В дополнение к перечисленным выше настройкам, обязательным для любых касс, для касс самообслуживания УКМ 5 выполняется специфичная настройка, отвечающая за отображение на экране анимации при оплате по QR-коду.

Настройка выполняется в конфигурационном файле sale.conf (applications\sale\sale.conf):

Image Removed

В раздел bl данного файла нужно добавить следующий фрагмент, после чего сохранить файл:

Блок кода
languagescala
themeRDark
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) необходимо разместить следующую строку:

Блок кода
languagescala
themeRDark
#   ,{ 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-кодам и по кассовым платёжным ссылкам СБП. Получить кассовые платёжные ссылки для каждой кассы торговой сети может только юридическое лицо в клиентском приложении банка.

На практике, сценарий оплаты по кассовой ссылке СБП выглядит следующим образом:

  1. Кассир формирует чек.
  2. Кассир переходит в режим оплаты.
  3. Кассир уточняет у покупателя способ оплаты.
  4. Покупатель сообщает, что будет оплачивать покупку с использованием QR-кода.
  5. Кассир выбирает вид оплаты по QR-коду и, при необходимости, изменяет сумму оплаты.
  6. Касса отправляет запрос в Универсальный интегратор.
  7. Универсальный интегратор отправляет запрос на создание заказа в процессинг банка.
  8. Если процессинг банка вернул положительный ответ, Универсальный интегратор возвращает этот ответ на кассу.
  9. Покупатель считывает QR-код с наклейки мобильным приложением банка.
  10. Касса выводит кассиру диалоговое окно с просьбой подтвердить, что покупатель успешно сканировал QR-код и выполнил оплату.
  11. Кассир подтверждает сканирование QR-кода и оплату.
  12. Касса отправляет запрос в Универсальный интегратор.
  13. Универсальный интегратор отправляет запрос на получение статуса заказа в процессинг банка.
  14. Процессинг банка возвращает ответ в Универсальный интегратор.
  15. Универсальный интегратор возвращает ответ на кассу.
  16. Касса получает ответ о статусе проведения платежа: если получено подтверждение ответа, касса добавляет QR-оплату в чек.
  17. Касса закрывает чек.

При получении отрицательного ответа от любой из систем или в случае невозможности выполнить QR-оплату на стороне покупателя, платеж отменяется и кассир предлагает клиенту выбрать другой способ оплаты чека.

Якорь
linkcheck
linkcheck
Проверка платёжной ссылки СБП (только для банков Райффайзен, Газпром, Русский Стандарт)

Для осуществления QR-оплат, некоторые банки используют многоразовую платёжную ссылку СБП.

Считав сгенерированный QR-код, можно проверить соответствие считанной ссылки и ссылки в настройках Универсального интегратора, через который осуществляется взаимодействие с УКМ 5.

На кассе УКМ 5 проверка такой ссылки происходит следующим образом:

Клавиатурная кассаTouch-касса
1. Проверка платежной ссылки осуществляется через меню отчетов кассы:

Image Added

Image Added

2. В меню отчетов необходимо выбрать опцию Проверка статического QR-кода:

Image Added

Image Added

3. Для проверки QR-кода, его необходимо считать сканером:

Image Added

Image Added

4. Как только QR-код будет считан сканером, появится сообщение о результатах проверки: 

Image Added

либо:

Image Added

Image Added

либо:

Image Added

5. Если проверку прервать нажатием кнопки Отмена, то касса отобразит соответствующее оповещение:

Image Added

Якорь
binding
binding
Привязка платежной ссылки к юр.лицу/магазину/кассе (только для банков Райффайзен и Газпром)

Как правило, каждая платежная ссылка, содержащаяся в QR-коде, привязываются к определенному юр. лицу, магазину и кассе путем механического ввода данных об этой ссылке оператором на кассе. Райффайзенбанк решает проблемы промышленного тиражирования кассовых платёжных ссылок в крупных торговых сетях проще: подготовкой наклеек с QR-кодом, содержащих "пустую" кассовую ссылку, ещё не соотнесенную с конкретным клиентом (юр.лицом/магазином/кассой). Сначала такие наклейки размещаются на кассах в торговом зале, а затем с помощью отчета Проверка статического QR-кода через Универсальный интегратор осуществляется запрос, который привязывает платежную ссылку, содержащуюся в каждом конкретном QR-коде, к кассе, на которой она размещена, а также к конкретному юр.лицу и магазину.

При этом, может сложиться ситуация, когда в рамках одного магазина одновременно имеются как уже привязанные платежные ссылки, так и "пустые". В таком случае, отчет Проверка статического QR-кода будет работать следующим образом:

1. Если платежная ссылка уже привязана к кассе, то произойдет описанная выше штатная процедура проверки платежной ссылки СБП.

2. Если платежная ссылка еще не закреплена за определенной кассой, Универсальный интегратор выполнит запрос на привязку ссылки и сохранит результат данного запроса в таблице конфигурации. На кассу вернется сообщение о том, что кассовая ссылка успешно привязана. 

Настройки

Для организации оплаты по QR-коду, необходимо выполнить несколько групп настроек.

Предварительные условия

Корректная работа функционала требует специфических настроек (данных для внесения в базу данных Универсального интегратора) на стороне банковской системы, в рамках интеграции с которой используется функция QR-оплаты. За этими настройками (ключами и сертификатами) необходимо обратиться к представителям соответствующего банка. За примером заполнения базы данных тестовыми данными нужно обратиться к команде техподдержки продукта.

Если данное условие выполнено, то необходимо перейти к установке и настройке специального сервера – Универсальный интегратор, через который обрабатываются все QR-платежи в УКМ 5. Затем выполняются настройки на кассовом сервере УКМ 5.

Установка и настройка Универсального интегратора

Технические требования

  • двухъядерный процессор 2 ГГц;
  • системная память 4 GiB RAM;
  • 25 Гб свободного пространства на жестком диске.

В самом магазине сервер рекомендуется располагать как можно ближе к кассам, во избежание проблем со связью.

Дистрибутив

Актуальный образ выложен на FTP с последней версией УКМ 4.

Для стабильной работы потребуется последняя актуальная версия интегратора.

Актуальная версия

Блок кода
languagepy
themeRDark
ukm_integrator 111 master, 77dcbba

Как проверить версию

Блок кода
/usr/local/qrpay/qrpayd --version

Инсталляция и обновление

  • Инсталлятор

При установке дистрибутива необходимо выбрать из списка доступных программ Universal integrator:

Image Added

Если виртуальная машина после разворачивания получит сетевое имя, то данное имя надо прописать как 127.0.0.1 в /etc/hosts.

Примечание. Сетевое имя вручную менять нельзя! При этом сбрасываются настройки у RabbitMQ и ничего не работает! При установке Универсального интегратора конфигурационные файлы вспомогательного ПО Универсального интегратора привязываются к hostname, который будет присвоен при инсталляции, и последующая его смена не изменит этих настроек, что приведёт к неработоспособности Универсального интегратора.

В качестве базы данных используется MariaDB.

  • Обновление

Файл qrpay-update.sh необходимо поместить на сервер Универсального интегратора и дать ему права на исполнение:

Блок кода
languagepy
themeRDark
chmod +x ./qrpay-update.sh

Затем нужно выполнить установку:

Блок кода
languagepy
themeRDark
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

Индивидуальные настройки Универсального интегратора для банков

Отображение дочерних

Якорь
serverset
serverset
Настройки на кассовом сервере УКМ 5

1. Перейти на кассовом сервере по адресу: Магазин – Типы касс, выбрать тип кассы и нажать кнопку Настройки:

Image Added

В разделе subsystems конфигурационного файла mintukm.conf (applications\mintukm.conf) нужно добавить следующую строку и сохранить изменения:

Блок кода
languagescala
themeRDark
{ include file("conf/services/universal_integrator.conf") }

2. Необходимо убедиться в наличии файла universal_integrator.conf в разделе services иерархического древа:

Image Added

Якорь
qrwhere
qrwhere
Примечание. В зависимости от намерения использовать функционал на киосках/кассах самообслуживания или обычных кассах, следует установить подходящее значение для параметра showQRcode в данном конфигурационном файле:

0 – QR-код будет выведен на экран (рекомендовано для киоска/кассы самообслуживания);

1 – QR-код будет выведен на чековую ленту;

2 – QR-код одновременно отобразится на экране (рекомендовано для киоска/кассы самообслуживания) и распечатается на чековой ленте;

3 – QR-код будет отображен на дисплее покупателя (рекомендовано для обычных касс в комплекте с дисплеем покупателя).

Якорь
genset
genset
3. Нужно также проверить, присутствует ли файл payment_qrpay_ui.conf в разделе services\payment.

В данном файле следует прописать в качестве значения параметра modulePay то значение, которое указано для конкретного банка, QR-оплату которого вы настраиваете. То же самое касается параметров moduleCancel и subsystem. Например, на скриншоте ниже выполнены настройки для Райффайзенбанка (оплата по динамическому QR):

Image Added

Примечание. При желании настроить QR-оплату с помощью кассовой платежной ссылки нужно выбирать значения всех параметров с припиской _variable.

Выполненные настройки необходимо сохранить.

Якорь
custqr
custqr
Примечание. В случае настройки функционала QR Сбербанк SberPay (customer), помимо выбора значений параметров modulePaymoduleCancel и subsystem, также необходимо установить параметр scanQRCode = true, после чего сохранить файл:

Image Added

4. Следует добавить в конфигурационный файл payment.conf (services\payment\payment.conf) приведенную ниже строку, а затем сохранить изменения:

Блок кода
languagescala
themeRDark
{ include file("conf/services/payment/payment_qrpay_ui.conf") }

При оплате по QR-коду можно передавать в Универсальный интегратор значение поля Код ЦФО.

Дополнительные настройки для киосков и касс самообслуживания

В дополнение к перечисленным выше настройкам, обязательным для любых касс, для касс самообслуживания УКМ 5 выполняется специфичная настройка, отвечающая за отображение на экране анимации при оплате по QR-коду.

Настройка выполняется в конфигурационном файле sale.conf (applications\sale\sale.conf):

Image Added

В раздел bl данного файла нужно добавить следующий фрагмент, после чего сохранить файл:

Блок кода
languagescala
themeRDark
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
Проверка многоразовой платёжной ссылки СБП

Функционал проверки платежной ссылки СБП (для банков Райффайзен, Газпром и Русский Стандарт) требует следующих настроек:

1. В конфигурационном файле reports.conf (services\reports\reports.conf) необходимо разместить следующую строку:

Блок кода
languagescala
themeRDark
#   ,{ include file("conf/services/reports/qr_checker.conf")}       # Проверка статического QR-кода

2. В разделе services\reports нужно разместить конфигурационный файл qr_checker.conf. Он имеет несколько разный вид, в зависимости от конкретного банка: параметры modulePaymoduleCancel и subsystem в данном файле следует выставить идентичными значениям этих же параметров в настройках QR-оплаты:

Блок кода
languagescala
themeRDark
titleГазпромбанк
# 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
    }
  }
}
Блок кода
languagescala
themeRDark
titleБанк Русский Стандарт
# 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
    }
  }
}
Блок кода
languagepy
themeRDark
titleРайффайзенбанк
# 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-оплатыВсе выполненные настройки необходимо сохранить.