|
||||
1. Пример на PHP для подключения к серверу MikroBILL.
//Импортируем библиотеку API
include 'apicore.php'; //Создаём новый экземпляр класса MikroBILL_API $Api = new MikroBILL_API('IP_или_host', Port, 'Login', 'Password'); //Выполняем запрос API $Api->Process('Команда API'); //Закрываем соединение $Api->Close();
Вы можете скопировать файл apicore.php на другой WEB-сервер, где нет кассы MikroBILL,
тогда при создании экземпляра класса MikroBILL_API необходимо добавить ещё 2 аргумента:
//Создаём новый экземпляр класса MikroBILL_API
$Api = new MikroBILL_API('IP_или_host', Port, 'Login', 'Password', $CRYPTO_KEY_1, $CRYPTO_KEY_2);
Переменную $CRYPTO_KEY_1 вы можете взять из файла config.php, который расположен в корне
WEB сервера MikroBILL, а переменную $CRYPTO_KEY_2 из БД MikroBILL из таблицы `workparams`. Обратите внимание, что значения этих переменных являются уникальными и при переустановке MikroBILL будут изменены! |
||||
2. Формат команд.
Команды вызываются по их пути. Разделителем пути является символ точки. Путь соответсвует классам в их иерархии, описание классов доступно здесь.
Как видим, команда получения или поиска абонентов находится непосредственно в классе API, значит вызов будет выглядеть так:
$Api->Process('API.GetClients');
Результатом будет JSON вида:
{"return":[...], "code":0}
В поле return массив ID абонентов. Поле code = 0 показывает отсутствие ошибок. Любое другое число сигнализирует о проблеме, тогда в return будет описание.
Чтобы обратиться к свойству абонента, в пути команды необходимо указать ID абонета:
// Получаем имя абонента
$Api->Process("API.Client.$ClientGUID.AutorizeInfo.Name");
Результат:
{"return":"UserName", "code":0}
Ещё пример. Установим новый IP абоненту. Для этого нужно вначале получить все аккаунты абонента:
$Api->Process("API.Client.$ClientGUID.AutorizeInfo.Accounts");
Результатом будет массив GUID аккаунтов:
{"return":[...], "code":0}
Теперь обратимся к нужному аккаунту, чтобы получить свойство "IP".
$Api->Process("API.Client.$ClientGUID.AutorizeInfo.Accounts.$AccountGUID.IP");
Ответ:
{"return":"IP_клиента", "code":0}
Для установки значения необходимо добавить второй аргумент в функцию Process:
$Api->Process("API.Client.$ClientGUID.AutorizeInfo.Accounts.$AccountGUID.IP", "192.168.10.25");
Если функция требует несколько входящих аргументов, то их нужно передавать в виде массива.
Напоминаем, описание входных аргументов Вы можете найти в описании классов здесь.
// Добавляем аккаунт абоненту
$Api->Process("API.Client.$ClientGUID.AutorizeInfo.Accounts.AddAccount",["120.10.53.234","","Login","Password"]);
Если операция прошла успешно, вы получит сообщение вида:
{"return":"OK", "code":0}
Вы можете в одной команде запрашивать несколько значений (начиная с версии MikroBILL 2.0.9), для этого во второй аргумент в функцию Process необходимо передать массив.
В массиве необходимо перечислить аргументы так, чтобы начальный путь в функции Process + имя элемента массива образовали законченный путь. // Создаём массив и перечисляем аргументы. $arr = array((string)$AccountGUID => array('IP', 'MAC')); // Выполняем команду $Api->Process("API.Client.$ClientGUID.AutorizeInfo.Accounts", $arr); // В данном случае будут вызваны 2 пути: // API.Client.$ClientGUID.AutorizeInfo.Accounts.$AccountGUID.IP // API.Client.$ClientGUID.AutorizeInfo.Accounts.$AccountGUID.MAC
Результатом будет JSON вида:
[{"return":"1.1.1.1", "code":0, "path":"API.Client.633824158637492.AutorizeInfo.Accounts.28236356495083.IP"},
{"return":"AA:AA:AA:AA:AA:AA", "code":0, "path":"API.Client.633824158637492.AutorizeInfo.Accounts.28236356495083.MAC"}]
Для того, чтобы установить несколько параметров одновременно, нужно в массиве к каждому аргументу добавить ассоциированное значение.
// Создаём массив и перечисляем аргументы. $arr = array((string)$AccountGUID => array('IP' => '192.168.25.110', 'MAC' => 'aa:bb:cc:dd:ee:ff')); // Выполняем команду $Api->Process("API.Client.$ClientGUID.AutorizeInfo.Accounts", $arr);
Результатом будет JSON вида:
[{"return":"OK", "code":0, "path":"API.Client.633824158637492.AutorizeInfo.Accounts.28236356495083.IP"},
{"return":"OK", "code":0, "path":"API.Client.633824158637492.AutorizeInfo.Accounts.28236356495083.MAC"}]
Так же имеется возможность в одной команде читать параметры и устанавливать.
// Создаём массив и перечисляем аргументы. $arr = array((string)"$ClientGUID.BillingInfo.Money", (string)"$ClientGUID2.AutorizeInfo.Accounts.$AccountGUID2" => array('MAC' => 'aa:bb:cc:dd:ee:ff')); // Выполняем команду $Api->Process("API.Client", $arr);
Результатом будет JSON вида:
[{"return":"100.01", "code":0, "path":"API.Client.633824158637492.BillingInfo.Money"},
{"return":"OK", "code":0, "path":"API.Client.9527563927532953.AutorizeInfo.Accounts.835354904534456.MAC"}]
Вы можете использовать массивы с любой глубиной вложенности.
Например, здесь: // Создаём массив и перечисляем аргументы. $arr=array('IP' => '192.168.25.110'); // Выполняем команду $Api->Process("API.Client.633824158637492.AutorizeInfo.Accounts.28236356495083", $arr);
И здесь:
// Создаём массив и перечисляем аргументы. $arr = array('AutorizeInfo' => array('Accounts' => array('28236356495083' => array('IP' => '192.168.25.110')))); // Выполняем команду $Api->Process("API.Client.633824158637492", $arr);
В обоих случаях вызывается путь:
API.Client.633824158637492.AutorizeInfo.Accounts.28236356495083.IP |