Терминалы Приватбанка, версия 2: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
мНемає опису редагування
мНемає опису редагування
Рядок 27: Рядок 27:
field_value => ['nas21'], # значения допполя (либо группы)
field_value => ['nas21'], # значения допполя (либо группы)
params => [
params => [
{ # расщепление платежей
{ # расщепление платежей
percent => 10,
percent => 10,
serviceCode => 10,
serviceCode => 10,
Рядок 56: Рядок 56:
},
},
],
],
</pre>
Правило - это блок {...} в котором находятся 3 параметра:
* field_name (не обязательное)
* field_value (не обязательное)
* params (обязательное) - параметры ответа платежной системе
Когда модуль получает запрос от платежной системы, он проверяет правила сверху вниз, и если правило совпадает - модуль формирует ответ согласно этому правилу и прекращает их (правил) обработку. Таким образом вы можете запрограммировать такую логику: у клиента есть допполе, указывающее к какому району обслуживания он относится. В зависимости от этого поля мы будем возвращать Приватбанку информацию к какому мерчанту перечислять финансы. Однако, если по какой-либо причине поле не установлено, можно в следующем правиле проверить его группу и ответить соответствующе.
Правила задаются как perl-код - здесь он чем-то похож на json, тем не менее можно ошибиться в синтаксисе и он вообще не будет запускаться. Поэтому после изменения проверяем его так:
<pre>
cd /usr/local/nodeny/ && perl -c modules/p24/p24.pl
</pre>
<pre>
modules/p24/p24.pl syntax OK
</pre>
</pre>

Версія за 10:03, 21 грудня 2024

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

  • Если группа клиента 1 или 5 или 10, то распределить платеж между мерчантами М1, M2, M3 в соотношении 20%-30%-50%
  • Если группа иная, но установлено поле ФОП, то разпределить платеж между мерчантами M2 и M4 в соотношении 50%-50%
  • Если не ФОП и при этом группа 7, то все финансы перечислить на M5
  • Если не ФОП и при этом группа 8, то все финансы перечислить на M6
  • Всех остальных делить между M5 и M6 в соотношении 10%-90%

Задается это правилами в файле p24.pl:

rules => [
	{
		field_name	=> 'grp',		# допполе (либо grp)
		field_value	=> [1, 2, 13],		# значения допполя (либо группы)
		params	=> [
			{
				percent		=> 100,
				serviceCode	=> 10,
				CompanyCode	=> 12345,
				ServiceName	=> 'Доступ до мережі Інтернет',
			}
		]
	},
	{			
		field_name	=> '_ip_tag',		# допполе (либо grp)
		field_value	=> ['nas21'],		# значения допполя (либо группы)
		params	=> [
			{				# расщепление платежей
				percent		=> 10,
				serviceCode	=> 10,
				CompanyCode	=> 12345,
				ServiceName	=> 'Доступ до мережі Інтернет',
			},{
				percent		=> 20,
				serviceCode => 11,
				CompanyCode	=> 22222,
				ServiceName	=> 'Послуга техпідтримки',
			},{
				percent		=> 70,
				serviceCode	=> 12,
				CompanyCode	=> 33333,
				ServiceName	=> 'Послуга відпочинку',
			}
		],
	},
	{	# правило для всех остальных, кто не попал в предыдущие
		params	=> [
			{
				percent		=> 100,
				serviceCode	=> 200,
				CompanyCode	=> 777777,
				ServiceName	=> 'Доступ до мережі Інтернет',
			}
		]
	},
],


Правило - это блок {...} в котором находятся 3 параметра:

  • field_name (не обязательное)
  • field_value (не обязательное)
  • params (обязательное) - параметры ответа платежной системе

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


Правила задаются как perl-код - здесь он чем-то похож на json, тем не менее можно ошибиться в синтаксисе и он вообще не будет запускаться. Поэтому после изменения проверяем его так:

cd /usr/local/nodeny/ && perl -c modules/p24/p24.pl 
modules/p24/p24.pl syntax OK