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

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

Ключ

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

...

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

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

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

...

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

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

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

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

либо:

либо:

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

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

...

Альфа)

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

...

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 Removed

Если виртуальная машина после разворачивания получит сетевое имя, то данное имя надо прописать как 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

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

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

...

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

Image Removed

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

...

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

Процесс привязки/проверки кассовой платежной ссылки для пользователей ПО Альфа-Банка происходит так же, как описано выше, однако, имеет особенность. При привязке ссылки, сразу после считывания QR-кода, касса будет запрашивать ввод номера терминала:

Image Added

Номера терминалов строго индивидуальны и генерируются на стороне Альфа-Банка при регистрации сделки СБП. Количество номеров терминалов выдается банком ритейлеру по количеству используемых в магазине КСО/киосков/касс. За корректность используемых номеров терминалов полностью ответственен ритейлер.

Номер терминала нужно ввести вручную, после чего – нажать Ввод:

Image Added 

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

Настройки

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

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

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

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

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

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

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

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

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

/usr/local/qrpay/qrpayd --version

Дистрибутив

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

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

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

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

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

Image Added

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

Image Added

Если после разворачивания виртуальная машина получит сетевое имя, то данное имя надо прописать как 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

<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 (\mintukm.conf) нужно добавить следующую строку и сохранить изменения:

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

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

...

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

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

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

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

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

Image Added

4. Следует добавить в конфигурационный файл :

Image Removed

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 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. Он имеет несколько разный вид, в зависимости от конкретного банка: параметры modulePaymoduleCancel и subsystem в данном файле следует выставить идентичными значениям этих же параметров в настройках QR-оплаты:

...

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.qrgazpromqrraiffd_variable.payment"
      moduleCancel  = "servplus.qrgazpromqrraiffd_variable.cancel"
      subsystem     = "qrgazpromqrraiffd_variable"
	      amqp          = "amq.topic"
  	    amqpTimeout   = 1050 second
    	}
  }
}
Блок кода
languagescala
themeRDark
titleАльфа-Банк Русский Стандарт
# QR-оплаты. Операция "Проверка статического QR-кода"
# Настраивать так же, как и QR-оплату
#
{
  "reports.qr_checker": {
    params : {
      num           = 4                 # Последовательность отображения отчетов в Приложении "Отчеты".
                  # В начале меню со списком отчётов отображаются отчёты с меньшими значениями параметра "num".
      name          = "Проверка статического QR-кода"  # Название отчёта в меню "Отчёты"
      description # В начале= меню"Проверка сосоответствия спискомнаклеенного отчётовна отображаютсякассе отчётыQR-кода с меньшимитем, значениямичто параметра "num".
      name     для этой кассы настроен" # Краткое описание отчёта в этом же меню.
   url = "Проверка статического QR-кода"   # Название отчёта в меню= "Отчётыamqp://ukm:xxxxxx@192.168.24.154"
    modulePay  description   = "Проверка соответствия наклеенного на кассе QR-кода с тем, что для этой кассы настроен" # Краткое описание отчёта в этом же меню."servplus.qralpha_variable.payment"
   moduleCancel  = "servplus.qralpha_variable.cancel"
   subsystem     = "qralpha_variable"
   amqp       url   = "amq.topic"
   amqpTimeout   = "amqp://ukm:xxxxxx@192.168.25.93"10 second
 }
  }
 modulePay     = "servplus.qrrsb_variable.payment"
      moduleCancel  = "servplus.qrrsb_variable.cancel"
}
Блок кода
languagescala
themeRDark
titleБанк "Хлынов"
# QR-оплаты. Операция "Проверка статического QR-кода"
# Настраивать так же, как и QR-оплату
#
{
  "reports.qr_checker": {
    params subsystem: {
   = "qrrsb_variable"   num    amqp          = "amq.topic"4       amqpTimeout   = 10 second     }   } }
Блок кода
languagepy
themeRDark
titleРайффайзенбанк
# QR-оплаты. Операция "Проверка статического QR-кода" # Настраивать так же, как и QR-оплату # { #  "reports.qr_checker": {
    params : {Последовательность отображения отчетов в Приложении "Отчеты".
          num           = 4							            # Последовательность отображения отчетов в Приложении "Отчеты". 										        # В начале меню со списком отчётов отображаются отчёты с меньшими значениями параметра "num".
      name          = "Проверка статического QR-кода"	static Хлынов"   # Название отчёта в меню "Отчёты"
      description   = "Проверка соответствия наклеенного на кассе QR-кода с тем, что для этой кассы настроен" # Краткое описание отчёта в этом же меню.
 	     url           = "amqp://ukm:xxxxxx@192.168.2524.113154"
      modulePay     = "servplus.qrraiffd_variableqrbankhlynov.payment"
      moduleCancel  = "servplus.qrraiffd_variableqrbankhlynov.cancel"
      subsystem     = "qrraiffd_variableqrbankhlynov"
	      amqp          = "amq.topic"
  	    amqpTimeout   = 50 second
	    }
  }
}

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