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

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

Ключ

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

ПО банка "Хлынов" позволяет производить оплаты через Систему быстрых платежей как по подписке (см. настройки ниже), так и по кассовой платежной ссылке

Поскольку настройки Универсального интегратора идентичны как для оплаты по подписке, так и для оплаты по кассовой платежной ссылке, рекомендуем настроить сразу оба типа оплат. В таком случае, платежи покупателей с оформленной подпиской будут списываться с них автоматически при нажатии кнопки Расчет, а тем, у кого подписки нет, будет предложена оплата по кассовой ссылке.

Оглавление

Описание

Подписка на оплату по СБП – это возможность привязывать свой банковский счёт к магазину для дальнейших покупок. Покупатель, оформивший такую подписку, может производить оплату без сканирования QR-кода и захода в приложение банка: денежные средства при оформленной подписке автоматически списываются со счёта, который пользователь выбрал в ходе привязки.

Подписка оформляется покупателем на внешнем сервисе (путём его взаимодействия с Национальной Системой Платёжных Карт). Для проведения оплаты по подписке:

  • покупатель безопасно авторизуется в чеке по динамическому QR-коду (осуществляется через систему лояльности СуперМаг Loya);
  • LOYA передает на кассу всю необходимую техническую информацию для проведения оплаты по подписке СБП;
  • касса отправляет в Универсальный интегратор полученные от LOYA сведения;
  • через взаимодействие Универсального интегратора с процессинговым центром банка "Хлынов" и Национальной Системой Платёжных Карт, производится оплата по подписке.

Для наглядности, процесс оплаты по подписке приведен ниже в виде схемы:

Image Added

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

Описание таблиц

  • qrbankhlynov_merchants – таблица для мерчантов в формате JSON
  • qrbankhlynov_stores – таблица конфигураций для магазинов
  • qrbankhlynov_terminals – таблица конфигураций для терминалов (касс) формате JSON
  • qrbankhlynov_transactions – журнал транзакций

Структура таблиц

  • В таблице qrbankhlynov_stores находится связка между идентификатором магазина из запроса и его конфигурацией. Если магазина нет в таблице, то по умолчанию, merchant = 0:
НазваниеЗначениеОписание
StoreID
Идентификатор магазина в торговой системе
merchant
Идентификатор конфигурации из qrbankhlynov_merchants
  • В таблице qrbankhlynov_merchants находятся настройки мерчантов в формате JSON:
НазваниеЗначениеОписание
id
Идентификатор конфигурации
value

url – адрес отправки запросов

ca – корневой сертификат

cert – сертификат мерчанта

pkey – ключ мерчанта

extEntityId – параметры для регистрации кассовой ссылки

merchantId – идентификатор зарегистрированного ТСП в СБП

account – номер счета: если у ТСП есть счет по умолчанию, то можно не указывать счет/синоним счета в запросе

accAlias – ID счета: применяется, чтобы не использовать фактическое значение номера счета; альтернатива указанию account

qrTtl – время жизни ссылки в минутах; по умолчанию, 5 минут

interval  интервал между опросами в секундах; по умолчанию, 5 секунд

return_interval – интервал между запросами во время отмены; по умолчанию, 3 минуты

timeout – тайм-аут ожидания http-ответа в секундах; по умолчанию, 30 секунд

cancel_lifetime – время жизни отмены платежа в часах; по умолчанию, 0 – бесконечно

Конфигурация в формате JSON
  • В таблице qrbankhlynov_terminals находятся настройки терминалов в формате JSON:
НазваниеЗначениеОписание
TerminalID
Идентификатор терминала из запроса. Если запрос идет от УКМ, то соответствует cash_id – идентификатор кассы в торговой системе
value

payload – ссылка на QR: если есть, то высвечивается на кассе

qrcId – идентификатор QR: если нет, то вычисляется из payload

qrTtl – переопределяет из конфигурации merchant

Конфигурация в формате JSON

Дополнительная информация

После заполнения данных в БД демона необходим перезапуск:

sudo systemctl stop qrpayd.service

sudo systemctl start qrpayd.service

RabbitMQ перезапускать не надо.

________________________________________________

Название очереди RabbitMQ – qrbankhlynov.

________________________________________________

Удобный просмотр поля `id` в `qrbankhlynov_transactions`:

ALTER TABLE `qrbankhlynov_transactions`
ADD COLUMN `RequetsID` char(38)
GENERATED ALWAYS AS (LOWER(CONCAT(
'{', HEX(LEFT(`id`, 4)), '-', HEX(MID(`id`, 5, 2)), '-', HEX(MID(`id`, 7, 2)), '-', HEX(MID(`id`, 9, 2)), '-', HEX(RIGHT(`id`, 6)), '}'
))) VIRTUAL AFTER `id`;

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

Стандартные, однако, содержимое конфигурационного файла payment_qrpay_ui.conf(services/payment/payment_qrpay_ui.conf) будет немного иным:

Блок кода
languagescala
themeRDark
titlepayment_qrpay_ui.conf
{
  "payment.qrpay_raiffd": {
    params : {
      paymentId = 9                             # Id средства оплаты. Уникальный код средства оплаты на кассе. Определяет порядок вывода списка средств оплаты на экран дисплея.
      externalCode = "9"                        # Id средства оплаты для внешних систем. Не используется. Рекомендуется устанавливать значение равное paymentId.
      currencyId = 0                            # Параметр не изменять!
      currencyCode = "RUB"                      # Параметр не изменять!
      name = "Оплата QR-кодом"                  # Название средства оплаты. Выводится на экран кассира, печатается в чеке и в отчётах.
      timeout = 1000                            # Время ожидания ответа от подсистем (в секундах). Параметр изменять не рекомендуется.
      isMain = false                            # Параметр, устанавливающий данный тип оплаты по-умолчанию
      pType = Card                              # Тип средства оплаты.             Параметр не изменять!
      isFiscal = true                           # Средство оплаты должно регистрироваться в ККТ. Параметр не изменять!
      returnByCashForbidden = false             # Нельзя возвращать наличными покупки, оплаченные данным средством оплаты. Параметр не изменять!
      changeAllowed = false                     # Параметр не изменять!
      url = "amqp://ukm:xxxxxx@192.168.24.74"  # URL Универсального интегратора
      modulePay = "servplus.qrraiffd_variable.payment"      # Тип модуля оплаты. Настройка для банков:
	                                            # Райффайзен Банк       - "servplus.qrraiffd.payment"
												# Банк Русский Стандарт - "servplus.qrrsb.payment"
												# Газпромбанк           - "servplus.qrgazprom.payment"
      moduleCancel = "servplus.qrraiffd_variable.payment"    # Тип модуля отмены. Настройка для банков:
	                                            # Райффайзен Банк       - "servplus.qrraiffd.cancel"
												# Банк Русский Стандарт - "servplus.qrrsb.cancel"
												# Газпромбанк           - "servplus.qrgazprom.cancel"
      subsystem = "qrraiffd_variable"                       # Подсистема. Настройка для банков:
	                                            # Райффайзен Банк       - "qrraiffd"
												# Банк Русский Стандарт - "qrrsb"
												# Газпромбанк           - "qrgazprom"
      amqp = "amq.topic"                        # Параметр не изменять!
      amqpTimeout = 10 second                   # Параметр не изменять!
      onScreenOrder = 3                         # Порядок отображения средства оплаты на экране
      autoStartup = false					    # Запускать оплату автоматически
      scanQRCode = false                        # Считывание QR сканером с экрана устройства
      useSubscription = true                    # Использование подписки через систему лояльности
      availableOnSelfService = true             # Метод оплаты доступен в режиме КСО (киоск самообслуживания)
    }
  }
}

Параметр useSubscription необходимо установить в значение true, после чего сохранить файл:

Image Added

Также, в конфигурационном файле loya.conf (services/marketing/loya.conf) нужно настроить регулярное выражение, которое позволит УКМ 5 принимать сведения о клиенте LOYA, авторизовавшемся в чеке по динамическому QR- коду, например:

Image Added

Структуру данного регулярного выражения можно менять, исходя из особенностей конкретной торговой сети. Файл с внесенными в него изменениями необходимо сохранить.