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

Ключ

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

...

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

...

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

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

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

Возврат оплаты через 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. Проверка платежной ссылки осуществляется через меню отчетов кассы:

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

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

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

либо:

либо:

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

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

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

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

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

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

Якорь
specalfa
specalfa
Особенность привязки платежной ссылки для Альфа-банка

...

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

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

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

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

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

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

/usr/local/qrpay/qrpayd --version

Дистрибутив

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

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

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

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

При установке дистрибутива, сначала нужно выбрать раздел Installation on powerful cash registers:

Затем необходимо выбрать пункт UKM4 Integrator (64 bit):

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

Примечание. Сетевое имя вручную менять нельзя! 

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

  • Обновление

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

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

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

Блок кода
languagepy
themeRDark
sudo systemctl stop qrpayd.service
sudo ./qrpay-update-amd64.sh
sudo systemctl start qrpayd.service

Логины/пароли

  • Пользователь системы: qrpay/xxxxxx.
  • Пользователь MariaDB: qrpay@localhost/xxxxxx.
  • Пользователи RabbitMQ:
    • admin/admin для администрирования;
    • ukm/xxxxxx для доступа с кассы.
Пояснения к паролям RabbitMQ
  • Пользователь admin c паролем admin в процессе работы системы не требуется, его можно удалить или заменить пароль на любой устраивающий.
  • Терминалы подключаются с помощью пользователя ukm с паролем xxxxxx, но его можно поменять на любой другой, либо создать нового пользователя:

    Блок кода
    languagescala
    themeRDark
    rabbitmqctl add_user {пользователь} {пароль} rabbitmqctl set_permissions -p / {пользователь} ".*" ".*" ".*"
    
    Но требуется прописать этого пользователя с паролем в настройках магазина УКМ 4, можно для каждого магазина прописать своего пользователя.


  • Демон qrpay подключается с помощью специальной учетной записи, только с того же компьютера.

Веб от RabbitMQ

<ip>:15672

Rabbit логин/пароль: admin/admin

Настройка сети

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

...

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

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

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

...

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

Image Modified

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

...

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

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

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

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

Image Modified

В раздел 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-static Хлынов"   # Название отчёта в меню "Отчёты"
      description   = "Проверка соответствия наклеенного на кассе QR-кода с тем, что для этой кассы настроен" # Краткое описание отчёта в этом же меню.
      url           = "amqp://ukm:xxxxxx@192.168.24.154"
      modulePay     = "servplus.qrbankhlynov.payment"
      moduleCancel  = "servplus.qrbankhlynov.cancel"
      subsystem     = "qrbankhlynov"
      amqp          = "amq.topic"
      amqpTimeout   = 50 second
    }
  }
}

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