<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https:///index.php?action=history&amp;feed=atom&amp;title=%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D1%8B_%D0%9F%D1%80%D0%B8%D0%B2%D0%B0%D1%82%D0%B1%D0%B0%D0%BD%D0%BA%D0%B0%2C_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F_2</id>
	<title>Терминалы Приватбанка, версия 2 - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https:///index.php?action=history&amp;feed=atom&amp;title=%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D1%8B_%D0%9F%D1%80%D0%B8%D0%B2%D0%B0%D1%82%D0%B1%D0%B0%D0%BD%D0%BA%D0%B0%2C_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F_2"/>
	<link rel="alternate" type="text/html" href=""/>
	<updated>2026-05-05T13:37:34Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id></id>
		<title>Sv в 10:05, 22 грудня 2024</title>
		<link rel="alternate" type="text/html" href=""/>
		<updated>2024-12-22T10:05:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Данная версия платежного модуля позволяет очень гибко перераспределять поступающие средства, используя такие фичи как расщепление и мультимерчант. Приведем виртуальный пример для демонстрации возможностей:&lt;br /&gt;
&lt;br /&gt;
* Если группа клиента 1 или 5 или 10, то распределить платеж между мерчантами М1, M2, M3 в соотношении 20%-30%-50%&lt;br /&gt;
* Если группа иная, но установлено поле ФОП, то разпределить платеж между мерчантами M2 и M4 в соотношении 50%-50%&lt;br /&gt;
* Если не ФОП и при этом группа 7, то все финансы перечислить на M5&lt;br /&gt;
* Если не ФОП и при этом группа 8, то все финансы перечислить на M6&lt;br /&gt;
* Всех остальных делить между M5 и M6 в соотношении 10%-90%&lt;br /&gt;
&lt;br /&gt;
Задается это правилами в файле p24.pl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rules =&amp;gt; [&lt;br /&gt;
    {&lt;br /&gt;
        field_name  =&amp;gt; 'grp',           # допполе (либо grp)&lt;br /&gt;
        field_value =&amp;gt; [1, 2, 13],      # значения допполя (либо группы)&lt;br /&gt;
        params =&amp;gt; [&lt;br /&gt;
            {&lt;br /&gt;
                percent     =&amp;gt; 100,&lt;br /&gt;
                serviceCode =&amp;gt; 10,&lt;br /&gt;
                CompanyCode =&amp;gt; 12345,&lt;br /&gt;
                ServiceName =&amp;gt; 'Доступ до мережі Інтернет',&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        field_name  =&amp;gt; '_ip_tag',       # допполе (либо grp)&lt;br /&gt;
        field_value =&amp;gt; ['nas21'],       # значения допполя (либо группы)&lt;br /&gt;
        params =&amp;gt; [&lt;br /&gt;
            {                           # расщепление платежей&lt;br /&gt;
                percent     =&amp;gt; 10,&lt;br /&gt;
                serviceCode =&amp;gt; 10,&lt;br /&gt;
                CompanyCode =&amp;gt; 12345,&lt;br /&gt;
                ServiceName =&amp;gt; 'Доступ до мережі Інтернет',&lt;br /&gt;
            },{&lt;br /&gt;
                percent     =&amp;gt; 20,&lt;br /&gt;
                serviceCode =&amp;gt; 11,&lt;br /&gt;
                CompanyCode =&amp;gt; 22222,&lt;br /&gt;
                ServiceName =&amp;gt; 'Послуга техпідтримки',&lt;br /&gt;
            },{&lt;br /&gt;
                percent     =&amp;gt; 70,&lt;br /&gt;
                serviceCode =&amp;gt; 12,&lt;br /&gt;
                CompanyCode =&amp;gt; 33333,&lt;br /&gt;
                ServiceName =&amp;gt; 'Послуга відпочинку',&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
    },&lt;br /&gt;
    {   # правило для всех остальных, кто не попал в предыдущие&lt;br /&gt;
        params =&amp;gt; [&lt;br /&gt;
            {&lt;br /&gt;
                percent     =&amp;gt; 100,&lt;br /&gt;
                serviceCode =&amp;gt; 200,&lt;br /&gt;
                CompanyCode =&amp;gt; 777777,&lt;br /&gt;
                ServiceName =&amp;gt; 'Доступ до мережі Інтернет',&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
],&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Правило - это блок {...} в котором находятся 3 параметра:&lt;br /&gt;
* field_name (необязательное)&lt;br /&gt;
* field_value (необязательное)&lt;br /&gt;
* params (обязательное) - параметры ответа платежной системе&lt;br /&gt;
&lt;br /&gt;
Когда модуль получает запрос от платежной системы, он проверяет правила сверху вниз, и если правило совпадает - модуль формирует ответ согласно этому правилу и прекращает их (правил) обработку. Таким образом вы можете запрограммировать такую логику: у клиента есть допполе, указывающее к какому району обслуживания он относится. В зависимости от этого поля мы будем возвращать Приватбанку информацию какому мерчанту перечислять финансы. Однако, если по какой-либо причине поле не установлено, можно в следующем правиле проверить его группу и ответить соответствующе.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Правила задаются как perl-код - здесь он чем-то похож на json, тем не менее можно ошибиться в синтаксисе и он вообще не будет запускаться. Поэтому после изменения проверяем его так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/local/nodeny/ &amp;amp;&amp;amp; perl -c modules/p24/p24.pl &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modules/p24/p24.pl syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Поскольку кейсов ответов может оказаться много, проверяйте ответ curl для разных клиентов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl --request POST https://your.site/cgi-bin/p24.pl -d @- &amp;lt;&amp;lt;EOF&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Transfer action=&amp;quot;Search&amp;quot; interface=&amp;quot;Debt&amp;quot; xmlns=&amp;quot;http://debt.privatbank.ua/Transfer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Data xsi:type=&amp;quot;Payer&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Unit name=&amp;quot;bill_identifier&amp;quot; value=&amp;quot;123&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Unit name=&amp;quot;summ&amp;quot; value=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Data&amp;gt;&lt;br /&gt;
&amp;lt;/Transfer&amp;gt;&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И не забывайте про логи logs/privat24_err.log и logs/privat24_ok.log&lt;/div&gt;</summary>
		<author><name>Sv</name></author>
	</entry>
</feed>