Monobank терминалы: відмінності між версіями
Sv (обговорення | внесок) мНемає опису редагування |
Sv (обговорення | внесок) м (→Расщепление) |
||
| Рядок 117: | Рядок 117: | ||
], | ], | ||
</pre> | </pre> | ||
field_name может указывать на допполе или номер (id) группы, в которой находится абонент (field_name => 'grp') | |||
Поточна версія на 07:48, 6 липня 2025
Модуль monoterminal - предназначен для пополнения счета через терминалы Монобанка. Поддерживает расщепление платежей и/или распределение между мерчантами.
Настройки расщепления задаются в файле modules/monoterminal/monoterminal.pl в ключе rules:
rules => [
правило 1,
правило 2,
...
],
Если вам не нужно расщепление или распределение финансов, у вас должно быть всего одно правило
Правило - это блок {...} в котором находятся 3 параметра:
- field_name (необязательное)
- field_value (необязательное)
- params (обязательное) - параметры ответа платежной системе
Когда модуль получает запрос от платежной системы, он проверяет правила сверху вниз. Если правило срабатывает - модуль формирует ответ согласно этому правилу и прекращает их (правил) обработку. Правило указывает какие данные должны быть у абонента и если эти данные совпадают - считается, что правило сработало. Например, правило может звучать так: если у абонента поле «обслуживает ФОП» равно «Снеосиков», то ответить платежной системе, что выплаты должны идти на ФОП Снеосиков.
Правила задаются как perl-код - здесь он чем-то похож на json, тем не менее можно ошибиться в синтаксисе и он вообще не будет запускаться. Поэтому после изменения проверяем его так:
cd /usr/local/nodeny/ && perl -c modules/monoterminal/monoterminal.pl
От json правила отличаются тем, что:
- вместо двоеточия используются символы =>
- ключи можно не обрамлять кавычками
- можно использовать одинарные кавычки
Пример правил:
rules => [
{
field_name => '_fop',
field_value => ['sneosikov'],
params => [
{
percent => 100,
companyCode => '111111',
serviceCode => '222222',
name => 'Доступ до мережі Інтернет',
companyInfo => {
edrpou => '13456789',
name => 'ТОВ СНЕОСІКОВ',
bankName => 'БАНК ПРЯМИЙ',
iban => 'UA783052990000026001041606722',
}
},
]
},
{
params => [
{
percent => 100,
companyCode => '333333',
serviceCode => '444444',
name => 'Доступ до мережі Інтернет',
companyInfo => {
edrpou => '7777777',
name => 'ТОВ ДЕРЖАК',
bankName => 'БАНК НЕПРЯМИЙ',
iban => 'UA783052990000026001111111111',
}
},
]
},
],
В данном примере 2 правила:
- для клиентов, у которых допполе «обслуживает ФОП» равно «Снеосиков»
- для всех остальных клиентов
Детали для данного примера:
- в вашем NoDeny должно существовать допполе «обслуживает ФОП» с именем _fop в базе данных
- поле percent указывает на процент платежа, который пойдет на данный ФОП. В примере 100% - это означает, что полная сумма. Таким образом, это пример не использующий расщепление, а просто распределение платежей между ФОП-ами
- во втором правиле не указаны условия (поля field_name и field_value), что означает «все другие абоненты»
- поле field_value - должно ссылаться на массив значений (нужно помещать значения в квадратные скобки). Например, если field_value => ['sneosikov', 'volyk'], то правило сработает на клиентов ФОП-а Снеосиков и на клиентов ФОП-а Волик
Расщепление
Управляется параметром percent, который указывает на процент от суммы платежа. В каждом правиле есть параметр params, который описывает ответ платежной системе. Внутри этого параметра несколько блоков {...}, в котором указывается процент, а также параметры ФОП (или не ФОП). Если вам необходимо перераспределять финансы в соотношении 40% и 60%, то это будет выглядеть примерно так:
rules => [
{
field_name => '_fop',
field_value => ['sneosikov'],
params => [
{
percent => 40,
companyCode => '111111',
serviceCode => '222222',
name => 'Доступ до мережі Інтернет',
companyInfo => {
...,
}
},
{
percent => 60,
companyCode => '888888',
serviceCode => '999999',
name => 'Послуга техпідтримки',
companyInfo => {
...,
}
},
]
},
...
],
field_name может указывать на допполе или номер (id) группы, в которой находится абонент (field_name => 'grp')