8 local_operators
Дмитрий Кононов edited this page 1 year ago

Дополнение интерфейса собственными провайдерами

Данный функционал работает только начиная с версии 3.2.2

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

Содержимое:

  • user/operators.local.xml
  • user/groups.local.xml
  • user/commissions.local.xml
  • user/logo/*.png - логотипы ваших провайдеров
  • user/logo/g*.png - логотипы ваших групп второго уровня
  • user/logo/root_groups/modern/*.png - логотипы корневых групп, если вы захотите таковую создать.

###Содержимое operators.local.xml ### Обычный формат списка операторов. Главное ограничение - ID ваших операторов не должны пересекаться с основной БД КиберПлат Рекомендуем начинать нумерацию с индекса 600001

Содержимое groups.local.xml

Список групп, дополняющий основные группы. НЕ НУЖНО дублировать весь основной groups.xml, данный файл только дополняет большой groups.xml КиберПлата. Если вы добавите группу с ID, совпадающим с существующей группой в groups.xml (на одном уровне вложенности), то содержимое просто добавится в начало основной группы.

Если вам нужно поместить оператора в какую-то стандартную группу, вы просто указываете её в своих группах, и помещаете в неё ссылку на вашего оператора. Все кнопки операторов из groups.local.xml попадают в начало списка провайдеров. Т.е. если в корне групп добавите ссылки на 5 провайдеров, они вытеснят top5 провайдеров, забитых вами в профиль терминала. Если вы создаёте кнопку провайдера, не забываем прикладывать к ней логотип.

Для ссылки на внутренние группы, вы можете добавить в top провайдеров такую запись:

<group_link id="1200"/> - это ссылка на группу Мегафон (та что внутри мобильной связи).

Пример пользовательской группы:

<?xml version="1.0" encoding="utf-8"?
<groups version="2.0">

<!- Провайдеры помещаемые в начало top20 --!>
<operator id="11033"/>
<operator id="5088" name="Платёжная книжка"/>
<operator id="20"/>
<group_link id="1200"/>

<!-- Дополнение стандартной группы мобильной связи --!>
<group id="101" name="Мобильная связь" type="root">
  <operator id="21" name="TELE2"/<!-- Теле2 будет у нас в 2х экземплярах и один из них будет в начале --!>

  <!-- Дополнение стандартной вложенной группы Мегафон --!>
  <group id="1200" name="Мегафон" type="logo_group">
<operator id="5088" name="Платёжная книжка"/ <!-- Первой в группе Мегафон будет Платежная Книжка  --!>
   </group>
 </group>

 <!-- Первой корневой группой теперь будет "Моя группа", для нее логотип user/logo/root_groups/modern/120.png --!>
 <group id="120" name="Моя группа" type="root">
   <operator id="11033"/>
   <operator id="5088" name="Платёжная книжка"/>
   <operator id="20"/>
   <operator id="21" name="TELE2"/>
 </group>
</groups>

Кастомный логотип

Для любой записи в groups.local.xml возможно указать тег image="ID” с альтернативным идентификатором логотипа.

<operator id="11033" image="undef_oper"/>

Параметризация кнопки провайдера

Запись вида

используется для того, чтобы отображать оператора с заранее заполненными полями. Так же есть возможность спрятать заполненное поле, а так же задать лимиты платежа.

Внимание: Регистр ключевых слов и параметров важен!

Пример использования

Параметры задаются в groups Использование будет показано на примере оператора 11079. Нас интересует секция fields:

<fields>
<field  type="number" id="OKTMO"  min_size="8"  max_size="11" >
 <name>ОКТМО</name>
</field>
<field  type="enum" id="104" >
<enum>
  <item name="Согласен" value="1"/>
  <item name="Не согласен" value="0"/>
 </enum>
 <name>С условиями оферты</name>
</field>
<field  type="text" id="103"  lang="ru"  min_size="1"  max_size="64" >
 <name>Адрес плательщика</name>
</field>
<field  type="number" id="101" >
 <name>ИНН подразделения ФМС</name>
 <mask>**********</mask>
</field>
<field  type="number" id="102" >
 <name>Контактный номер мобильного телефона</name>
 <mask>8(***)***-**-**</mask>
</field>
<field  type="text" id="100"  lang="ru"  min_size="1"  max_size="64" >
 <name>ФИО</name>
</field>
<field  type="number:float" id="SUM" >
 <name>Сумма к оплате</name>
</field>
</fields>[http://www]

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

<operator id="11079" name="" json="{'fields':[{'id':'OKTMO', 'value':'28701000', 'visible': 'true'},
{'id':'104', 'value':'1', 'visible': 'true'},
{'id':'101', 'value':'6901091580', 'visible': 'true'},
{'id':'SUM', 'value':'3500', 'visible': 'true'}]}"/>

После такого описания клиенту остается заполнить поля: id="100” ФИО, id="102” Контактный номер мобильного телефона и id="103” Адрес плательщика

Для редактора типа enum выбранное значение выставляется точно так же: один из возможных вариантов. Например, для оферты это 0 или 1: id="104”

Параметр visible в описании означает: отображать или нет это поле во время заполнения. То есть, возможно его заполнить и не показывать клиенту.

Содержимое commissions.local.xml

Пример содержания файла комиссий:

<?xml version="1.0" encoding="utf-8"?>
<commissions>
 <!-- Общая комиссия для всех провайдеров, если не указана другая  -->
<commission amount="8" type="percent"/>
<!-- Обычная комиссия для определённого опратора (можно указывать нулевую) -->
<operator id="1">
    <commission amount="10" type="percent"/>
</operator>

<!-- Ступенчатая комиссия для оператора, где:
day id=день недели действия комиссии, начиная с ПН
time begin\end=диапазон времени действия комиссии
amount above\below= диапазон сумм действия комиссии
commission amount=значение комиссии
commission type=тип комиссии, где:
absolute=фиксированная сумма
percent=процент
commission base=процентный расчёт комиссии относительно:
amount=суммы оператору
amount_all=внесённой суммы
commission min_charge\max_charge=минимальная\максимальная взымаемая сумма -->

<operator id="4091">
    <day id="1,2,4,5,6,7">
        <amount above="50" below="100">
            <commission amount="10" type="absolute" />
        </amount>
    </day>
    <day id="3,5,6,7">
        <time begin="00:00:00" end="12:30:00">
            <amount above="0" below="50">
                <commission amount="5" type="percent" base="amount_all" />
            </amount>
        </time>
    </day>
    <day id="1,2,4,5,6,7">
        <time begin="00:00:00" end="12:30:00">
            <amount above="0" below="50">
                <commission amount="4" type="percent" base="amount" />
            </amount>
        </time>
    </day>
    <day id="3">
        <amount above="50" below="100">
            <commission amount="15" type="absolute" />
        </amount>
    </day>
    <day id="3">
        <time begin="12:30:00" end="23:59:00">
            <amount above="100" below="200">
                <commission amount="3" type="percent" base="amount" min_charge="15" max_charge="100"/>
            </amount>
        </time>
    </day>
    <day id="1,2,4,5,6,7">
        <time begin="12:30:00" end="23:59:00">
            <amount above="100" below="200">
                <commission amount="4" type="percent" base="amount" />
            </amount>
        </time>
    </day>
</operator>
<commissions>

Поиск по локальной БД

Начиная с версии 3.11.0 в ТК можно настроить поиск по локальной базе для локальных операторов.

На данный момент настроить можно только вручную.

Что нужно для работы функционала:

  • В пользовательской директории (user) должен лежать файл базы в формате *.csv

  • В заголовке файла базы идентификаторы и имена полей, разделитель “;” (NUMBER=Лицевой счет;FIO=ФИО)

  • В описании оператора должно быть включено опциональное отображение ADDINFO и ADD_FIELDS, в URL должна быть ссылка на базу (local_data:имя_БД.csv).

    local_data:test.csv

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

<field id="FIO" min_size="1" type="text">
 <name>Номер</name>
 <dependency>{type}=="1"</dependency>
</field>

Чтобы приходили реестры нужно чтобы на мониторинге был оператор с соответствующим ID.

Пример настройки:

  1. На мониторинге добавляется локальный оператор с произвольным набором полей - он нужен для получения реестров.
  2. Создаётся файл базы данных согласно описанию.
  3. Создаётся файл operators.local.xml c ID созданного на мониторинге оператора и настраивается аналогично описанию.
  4. Создаётся файл groups.local.xml где указывается принадлежность оператора к группе.
  5. Настраивается комиссия - либо создать файл commissions.local.xml и настроить согласно описанию, либо настроить комиссию в мониторинге для данного оператора, сохранить и применить, после чего заблокировать данного оператора в настройке локальных провайдеров - заблокировать нужно будет в любом случае, т.к. после отправки конфигурации данный ID будет дублироваться (в operators и operators.local) что может привести к загрузке описания оператора из operators.xml, который не будет иметь необходимых настроек. Если комиссия настраивается по второму сценарию, то каждый раз для редактирования придётся включать оператора чтобы он отображался в настройках комиссий.
  6. Создать папку user, куда поместить все созданные файлы, заархивировать папку в zip формат и отправить через мониторинг соответствующей командой.