Настройка модуля MPS
Создайте нередактируемые типы платежей для систем платежей. id типов платежей можно узнать также в справочнике, выделив нужный тип платежа и нажав Ctrl+i. id нужно будет указать в конфигурации.
Проинсталируйте модуль на сервер, обновите клиент биллинга. Затем создайте экземпляр модуля. Cоздайте в редакторе конфигурации модуля новую конфигурацию по нижеприведённому примеру и сделайте ее активной.
Для всех систем платежей рекомендуется использовать только https-порт.
Здесь и далее "пс" - платёжная система.
Возможные параметры конфигурации модуля:
# Системы платежей добавляются как mps.<mpsId>.параметры, где <mpsId> - порядковый номер# Вкл/выкл - 1/0 - принимать или нет платежи для этой псmps.<mpsId>.mode=1# Названиеmps.<mpsId>.title=CyberPlat# Используемый протокол для общения пс с биллингомmps.<mpsId>.protocol=cp# Логин/пароль пс. Должен различаться для различных системmps.<mpsId>.login=mps.<mpsId>.passw=# id типа платежа, с которым добавляется платёж в договор, при проведении с этой псmps.<mpsId>.pid=## Комментарий, возвращающийся в ответе на проверку статуса/проведение платежа# (если в протоколе есть комментарий ответа)#mps.comment=$CONTRACT ($COMMENT)## Сертификаты# Проверять клиентский сертификат (рекомендуется, если позволяет протокол пс)mps.<mpsId>.cert=1# Клиентский сертификат (открытый ключ)# (для протокола eport открытый ключ указывается здесь же, а mps.1.cert=0)# возможно указать через modulus и exponent:#mps.<mpsId>.cert.mod=#mps.<mpsId>.cert.exp=# или в encoded(байты в 16-ричном представлении)#mps.<mpsId>.cert.encoded=# или в pem (base64), без header/footer (-----*** PUBLIC KEY-----) и переносов строкmps.<mpsId>.cert.pem=# кодировка параметров входящих запросов, например utf-8, cp1251#mps.<mpsId>.request.encoding=# Поиск договора для проведения платежа.# В некоторых системах возможны типы поиска - дополнительное поле.# Если их больше 1, то с дополнительным индексом. Если он отсутствует, используется тип поиска 0, # т.е. используются параметры поиска из mps.1.search.xxx (для mps.1.search.mode).# Если присутствует то, например, параметры поиска будут из mps.1.search.1.xxx (для mps.1.search.1.mode)# Обратите внимание, что если если задано без индекса (...search.mode=), то и остальные параметры должны# соответствовать (...search.pattern=) и для остальных индексов аналогично.## Поддержка передачи типа поиска через префикс# (т.е. если ищется договор x0000 c типом поиска 1, то в поле account протокола osmp передаётся 1_x0000)#mps.<mpsId>.protocol.ext=osmpPrefix# Отключение Base-аутентификации#mps.<mpsId>.protocol.ext=noBaseAuth# Если используется несколько расширений, их нужно прописать через запятую:#mps.<mpsId>.protocol.ext=noBaseAuth, osmpPrefix## Тип поиска (mps_login|contract|login|voice|email|phone|parameter|inet_login|custom)mps.<mpsId>.search.mode=# Код модуля для поиска (необходим для типов поиска login, phone)#mps.<mpsId>.search.mid=# Включение "множественного поиска", то есть проверка всего списка regex#mps.1.search.multi=1# Шаблон преобразования - pattern:::result, если пришедшее значение подходит под regexp, то # оно преобразуется перед поиском, если нет - остаётся без изменений, по умолчанию - без изменений.# Например, \A((?:\d{5})|(?:\d{6})|(?:\d{7}))(\d{2})\z:::NK$1-$2# если пришедший номер для поиска представляет собой 12345608, то он будет преобразован в NK123456-08,# и уже по нему будет произведён поиск договора#mps.<mpsId>.search.pattern=# пользовательский класс реализующий поиск, должен реализовывать интерфейс ru.bitel.bgbilling.modules.mps.server.bean.FindContract#mps.<mpsId>.search.custom= # regexp названий договоров, для которых возможен поиск. Если название договора не совпадает с regexp, # то он не будет найден для системы платежей для этого типа поиска#mps.<mpsId>.search.allow.contract.regexp=NK-.*# Группы договоров, для которых возможен поиск для этого типа поиска#mps.<mpsId>.search.allow.contract.groups=4,2,5,3## Ограничения на пополняемую сумму# минимальная. По умолчанию - 0.mps.<mpsId>.min.summ=# максимальная. По умолчанию - 1000000mps.<mpsId>.max.summ=## Разница во времени в минутах между сервером биллинга и системой платежей (например система работает по московскому времени, биллинг# по уфимскому +2 часа - 180)#mps.<mpsId>.timeoffset=# промежуток времени между временем платежа и реальным временем, с поправкой на timeoffset. # если задано и промежуток оказался больше то платёж не пройдёт#mps.<mpsId>.paytime=## Параметры логина mps (может использоваться для поиска договора при проведении платежа)# Формат вывода значения числового логина mps (на web-статистике)#mps.mps_login.format=# regexp проверки введённого значения#mps.mps_login.regexp=# Ошибка, выводимая в web-статистике при несовпадении введённого логина mps с regexp#mps.mps_login.regexp.error=В поле mps.1.protocol.ext можно указать расширения, если их несколько - через запятую:
osmpPrefix - означает, что тип поиска может быть передан как префикс в поле account. Расширение работает для протоколов ОСМП, Empay, Pegas, Rapida, Comepay.
noBaseAuth - означает, что в запросе не проверяется Base-аутентификация, т.е. параметры конфига mps.1.login и mps.1.passw не нужны.
payOnCheck - означает, что платеж проводится сразу при запросе на проверку.
addBalanceInfo - в ответ добавляется текущий баланс в поле account_balance (ОСМП, Empay, Pegas, Rapida, Comepay).
URL для систем платежей формируется из шаблона https://сервер/контекст/mpsexecuter/<mid>/<mpsid>, где <mid> - id модуля, <mpsid> - код системы платежей, т.е для вышеописанной конфигурации у CyberPlat mpsid=1.
Например, https://server:8443/bgbilling/mpsexecuter/10/1
Типы поиска :
- login - поиск по логину модулей DialUp или Voip (необходимо указать id модуля (mid)):
mps.1.search.mode=login
mps.1.search.mid=3
- contract - поиск по названию договора (например NK-0012; Здесь можно указать шаблон преобразования):
mps.1.search.mode=contract
mps.1.search.pattern=NK-$NUMBER - для поиска клиенту нужно будет ввести только 0012
или
mps.1.search.pattern=\A((?:\d\d\d\d\d\d)|(?:\d\d\d\d\d\d\d)|(?:\d\d\d\d\d))(\d\d)\z:::КФ$1-$2
(в последнем случае, если пришли 7, 8 или 9 цифр преобразовываем их к виду КФ$1-$2, т.е значения КФ12345-12 и 12345612 будут эквивалентны)
- phone - поиск по номеру телефона модуля phone (необходимо указать id модуля (mid));
- parameter - поиск по параметру договора (необходимо указать код типа параметра (pid)):
mps.1.search.mode=parameter
mps.1.search.pid=9
- mps_login - логин модуля MPS. Его выбирает себе клиент на странице статистики. Один для всех систем платежей.
- inet_login - логин модуля Inet (необходимо указать mid модуля Inet)
Для протоколов, не поддерживающих передачу типа поиска, реализована передача типа поиска через префикс x_идентификаторклиента (например, для ОСМП в поле account для поиска по search.1 логина 13 в запросе должно приходить: account=1_13). Для поддержки этого режима нужно установить mps.x.protocol.ext=1.
В комментарии ответа (если такой поддерживатся протоколом) можно передать номер, комментарий, параметр и/или баланс договора
mps.1.comment=$contract_title ($contract_comment) [$contract_param(4)] $contract_balance