PHPackages                             zorn-v/urfa-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. zorn-v/urfa-client

ActiveLibrary[API Development](/categories/api)

zorn-v/urfa-client
==================

Universal PHP client for UTM5 NetUp billing system based on api.xml

v2.2.6(2mo ago)0609↓100%GPL-3.0PHPPHP &gt;=7.1

Since Aug 5Pushed 2mo agoCompare

[ Source](https://github.com/zorn-v/UrfaClient)[ Packagist](https://packagist.org/packages/zorn-v/urfa-client)[ RSS](/packages/zorn-v-urfa-client/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (3)Versions (18)Used By (0)

URFAClient
==========

[](#urfaclient)

Универсальный PHP клиент для биллинговой системы NetUp UTM5 на основе api.xml

Установка
---------

[](#установка)

`composer require zorn-v/urfa-client`

Зависимости
-----------

[](#зависимости)

- UTM 5.3-005 &gt;=
- PHP 7.1 &gt;=
- Ext: OpenSSL, SimpleXML, Hash, Filter

Описание параметров
-------------------

[](#описание-параметров)

optiondefaultописаниеlogin\*—логин администратора или пользователяpassword\*—пароль администратора или пользователя соответственноhost\*—адрес ядра UTM5port11758порт ядра UTM5timeout30время ожидания ответа от сервераprotocolauto**ssl** или **tls** (доступно с версии UTM-5.3-002-update16) или **auto** (доступно с версии UTM-5.3-005-update2, работает с OpenSSL 1.1)adminTRUEуказываем какой пользователь подключается, если TRUE предоставляет сертификат admin.crt для соединения, используется только для протокола **ssl**apiapi\_53-005.xmlпуть до файла api.xmllogFALSEсборщик логов, если TRUE, перехватывает исключения UrfaClientExceptiondebugFALSEлогирование отсылаемых и принимаемых пакетовПример
------

[](#пример)

Рассмотрим пример использования библиотеки на примере функции rpcf\_add\_user\_new, у нас есть XML описание:

```

```

И так, нам нужно описать входные параметры (элемент input) в ассоциативный массив. Если в элементе присутствует атрибут `default`, параметр считается необязательным.

Получаем полное описание параметров функции `rpcf_add_user_new` из api.xml:

```
require __DIR__ . '/vendor/autoload.php';

$urfa = new \UrfaClient\UrfaClient();
var_export($urfa->method('rpcf_add_user_new'));
```

```
array (
  'login' => '',
  'password' => '',
  'full_name' => '',
  'is_juridical' => 0,
  'jur_address' => '',
  'act_address' => '',
  'flat_number' => '',
  'entrance' => '',
  'floor' => '',
  'district' => '',
  'building' => '',
  'passport' => '',
  'house_id' => 0,
  'work_tel' => '',
  'home_tel' => '',
  'mob_tel' => '',
  'web_page' => '',
  'icq_number' => '',
  'tax_number' => '',
  'kpp_number' => '',
  'email' => '',
  'bank_id' => 0,
  'bank_account' => '',
  'comments' => '',
  'personal_manager' => '',
  'connect_date' => 0,
  'is_send_invoice' => 0,
  'advance_payment' => 0,
  'switch_id' => 0,
  'port_number' => 0,
  'binded_currency_id' => 0,
  'parameters_count' =>
  array (
    0 =>
    array (
      'parameter_id' => 0,
      'parameter_value' => '',
    ),
  ),
  'groups_count' =>
  array (
    0 =>
    array (
      'groups' => 0,
    ),
  ),
  'is_blocked' => 0,
  'balance' => 0,
  'credit' => 0,
  'vat_rate' => 0,
  'sale_tax_rate' => 0,
  'int_status' => 0,
)
```

На основе данного описания оставляем необходимые нам параметры, порядок параметров неважен.

Как было замечено, разработчики UTM5 не пришли к единому формату описания функций. Отсюда возник вопрос, какое имя давать параметру `for` для элементов массива? Поэтому было принято решение, в качестве имени использовать имя предыдущего атрибута из `api.xml` (в некоторых случаях с этим будут проблемы). В нашем случае будет так:

```
array(
    // ...
    'parameters_count' => array(
        array(
            'parameter_id' => 0,
            'parameter_value' => 'м',
        ),
        array(
            'parameter_id' => 1,
            'parameter_value' => '13.06.2014',
        ),
    ),
    'groups_count' => array(
        array(
            'groups' => 1000,
        ),
        array(
            'groups' => 1001,
        ),
    ),
    // ...
)
```

Если попадется элемент `error` будет выброшено исключение *XML Described error:*, а далее атрибуты ошибки.

C условиями `if` все просто, если истина, то заходим внутрь. И содержание обрабатывается, как описано выше.

В итоге, получаем минимальный набор параметров для создания пользователя:

```
require __DIR__ . '/vendor/autoload.php';

$options = [
    'login'    => 'init',
    'password' => 'init',
    'host'  => 'localhost',
];
$urfa = new \UrfaClient\UrfaClient($options);

$result = $urfa->rpcf_add_user_new(array(
    'login'=>'test',
    'password'=>'test',
));
```

В переменную `$result` попадут данные которые описаны в элементе output.

debug опция
-----------

[](#debug-опция)

Если хотите видеть что конкретно (в байтах) отсылается/принимается, можно поступить например так

```
