Авторизация




API для PHP и Python
  |  
API для .NET



Написанное ниже относится к версиям MikroBILL 2.0.6 и более новым.
Для создания расширений на PHP вам понадобится подключить файл apicore.php
(найти его можно в папке WEB документов апача в подпапке kassa).
Полное описание классов доступно здесь.
Версия класса для Python здесь.



1. Пример на PHP для подключения к серверу MikroBILL.






Вы можете скопировать файл apicore.php на другой WEB-сервер, где нет кассы MikroBILL, тогда при создании экземпляра класса MikroBILL_API необходимо добавить ещё 2 аргумента:






Переменную $CRYPTO_KEY_1 вы можете взять из файла config.php, который расположен в корне WEB сервера MikroBILL, а переменную $CRYPTO_KEY_2 из БД MikroBILL из таблицы `workparams`.
Обратите внимание, что значения этих переменных являются уникальными и при переустановке MikroBILL будут изменены!





2. Формат команд.

Команды вызываются по их пути. Разделителем пути является символ точки. Путь соответсвует классам в их иерархии, описание классов доступно здесь.
Как видим, команда получения или поиска абонентов находится непосредственно в классе API, значит вызов будет выглядеть так:




Результатом будет JSON вида:




В поле return массив ID абонентов. Поле code = 0 показывает отсутствие ошибок. Любое другое число сигнализирует о проблеме, тогда в return будет описание.
Чтобы обратиться к свойству абонента, в пути команды необходимо указать ID абонета:




Результат:




Ещё пример. Установим новый IP абоненту. Для этого нужно вначале получить все аккаунты абонента:




Результатом будет массив GUID аккаунтов:




Теперь обратимся к нужному аккаунту, чтобы получить свойство "IP".




Ответ:




Для установки значения необходимо добавить второй аргумент в функцию Process:




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




Если операция прошла успешно, вы получит сообщение вида:






3. Пакетные команды.

Вы можете в одной команде запрашивать несколько значений (начиная с версии MikroBILL 2.0.9), для этого во второй аргумент в функцию Process необходимо передать массив.
В массиве необходимо перечислить аргументы так, чтобы начальный путь в функции Process + имя элемента массива образовали законченный путь.




Результатом будет JSON вида:




Начиная с версии MikroBILL 2.0.15 в ответ добавлен параметр "object", возвращающий результат всего запроса в виде JSON объекта.

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




Результатом будет JSON вида:




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




Результатом будет JSON вида:





Вы можете использовать массивы с любой глубиной вложенности.
Например, здесь:




И здесь:




В обоих случаях вызывается путь:





4. Поиск данных.

Начиная с версии MikroBILL 2.0.14 доступен поиск данных, для этого используется оператор Find, который присутствует внутри всех базовых классов. Поиск возращает GUID объектов, имеющих в своих полях искомые данные.
Команда поиска выглядит следующим образом:
$Api->Process("API.Класс.Find", ['Путь', 'Оператор_сравнения', Сравниваемое_значение]);
Например:



Вторым аргументом в функцию Process передаётся массив. Первый аргрумент массива - это путь, значение которого, мы будем сравнивать с условием. Второй аргумент - математическое условие. Третий аргумент - значение, с которым сравниваем.
Т.е. в нашем примере функция вернёт GUID всех абонентов, у которых StatusInfo.BlockReason = -1, т.е. всех, кому разрешён доступ.
Более подробная информация на странице описания классов.

Вы можете использовать несколько условий поиска. Для этого в массив четвёртым аргуметом добавьте AND или OR, а последующие три аргумента должны быть идентичны по своей сути первым трём, т.е. это: путь, логика сравнения и сравниваемое значение.
Количество дополнительных условий отбора может быть любым.
В примере ниже ищем GUID абонентов, которым разрешё доступ и у которых IP соответствует маске:



Как видим из примера выше, можно искать внутри любых печислений, например, в списке аккаунтов. Для этого в пути вместо GUID элемента нужно ставить символ *.