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

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

Ключ

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

Оглавление

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

Описание

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

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

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

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

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

...

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

Возврат

Возврат оплаты через QR-код, как Запись реквизитов QR-оплаты производится через запятую в поле qrRequisites конвертера Экспорт XML. Эти данные можно использовать для сверки между зарегистрированными оплатами СБП в торговой сети и оплатами в предоставляемой банком выписке.

Якорь
return
return
Возврат

Возврат оплаты через 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-кодом необходимо:

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-коду можно передавать в Универсальный интегратор значение поля Код ЦФО.

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

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

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

2. В разделе services\reports нужно разместить конфигурационный файл qr_checker.conf:

...

languagescala
themeRDark

...

Оплата по кассовой платежной ссылке

Некоторыми из наших клиентов справедливо подмечено, что оплата с помощью СБП по динамическим 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-оплатыВсе выполненные настройки необходимо сохранить.