Download the PHP package avto-dev/b2b-api-php without Composer
On this page you can find all versions of the php package avto-dev/b2b-api-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package b2b-api-php
THIS PACKAGE IS ABANDONED
And soon will be completely removed. New package is available here.
You must update your application soon as possible!
PHP-клиент для работы с B2B API
Данный пакет является реализацией клиента для работы с сервисом B2B API, значительно упрощающим работу с последним, предоставляя разработчику внятное API.
Все методы API сопровождены соответствующим @phpdoc
.
Установка
Для установки данного пакета выполните в терминале следующую команду:
Для этого необходим установленный
composer
. Для его установки перейдите по данной ссылке.Обратите внимание на то, что необходимо фиксировать мажорную версию устанавливаемого пакета.
Компоненты
Данный пакет состоит из следующих компонентов:
Название | Описание |
---|---|
Клиент | Реализует методы обращения к сервису B2B API |
HTTP-клиент | Реализует методы осуществления запросов по протоколу http (используется по умолчанию его реализация guzzle ) |
Справочники | Содержат основные значения (такие как типы запросов идентификаторов и так далее) |
Генераторы токенов | Производят генерацию токенов (авторизации на сервисе B2B API - в частности) |
Классы типов данных | К которым автоматически приводятся возвращаемые от сервиса данные (которые реализуют дополнительные методы-акцессоры), если это возможно. В противном случае всегда возвращается объект типа UnknownDataType ; |
Каждый компонент в той или иной мере автономен, и может использоваться отдельно от других при необходимости.
Жизненный цикл запроса
При создании инстанса клиента производится инициализация http-клиента и контейнеров-методов, каждый из которых отвечает за свою группу методов. Например, методы уровня пользователя вызываются с помощью $client->user()->someMethodName()
, в то время как команды, предназначенные для разработчиков, но повторяющие в некоторой степени команды уровня пользователя -- $client->dev()->user()->someMethodName()
. Таким образом, используя IDE для разработки, например, PHPStorm -- нажимая сочетание клавиш cmd
+ пробел
после каждого метода вы увидите как список тех команд, что он реализует, так и "вложенные" контейнеры со своими командами.
При вызове любого метода API производится проверка -- включен ли режим тестирования (параметр конфигурации is_test
), и если это так -- то реальный запрос не выполняется, а возвращается контент ответа из заранее подготовленных шаблонов, давая возможность произвести интеграцию с сервисом B2B API даже не имея учетной записи.
Как перед осуществлением запроса, так и после него -- производится выполнение всех callback-функций, что были зарегистрированы для http-клиента. Подробнее об их использовании смотрите исходный код.
В случае, если режим тестирования не активен - то производится запрос к сервису B2B API. Если запрос завершился не корректным кодом, или в его процессе "что-то пошло не так" - будет брошено исключение. Поэтому, во избежание "падения" ваших приложений -- оборачивайте все вызовы клиента в блок try { ... } catch (\Exception $e) { ... }
.
После получения ответа от B2B API -- вам возвращается объект типа B2BResponse
, который хранит в себе как "сырой" контент ответа в виде массива, так и базовые методы-акцессоры к данным в нём. Более того - если ответ содержит в себе блоки данных (контент отчета, статусная информация, прочее) -- он пытается разобрать тип вернувшихся данных и дает вам доступ к ним с помощью своего метода ->data()
. При его вызове вам вернется объект типа DataCollection
(коллекция данных), который реализует удобные методы для взаимодействия с последними -- получить их количество, извлечь первый элемент, перебрать все с помощью callback-функции и прочие.
В зависимости от того, какой тип данных "прилетел" в ответе от B2B API -- создастся объект соответствующего типа, со своими методами-акцессорами. Например, если вернулся контент отчета - вам будут доступны удобные методы для получения статусов источников, имен источников, получения состояния стадии генерации отчета, отдельный метод для извлечения данных по "путям филдов" и так далее. Самое важное -- это проверить тип объекта, что содержится в коллекции (его соответствие ожидаемому), и соответствии с ним использовать нужные методы-акцессоры.
Настройка
Для того, чтоб указать клиенту какую версию B2B API использовать, по какому URI, и некоторые другие опции -- необходимо передать их в конструктор класса клиента в виде массива определенной структуры. Пример структуры конфигурации вы можете наблюдать ниже:
Использование
В качестве отправной точки вы можете использовать следующий пример:
Примеры
Ниже представлены некоторые примеры по работе с клиентом. Базовые операции -- проверить соединение с сервисом B2B API, заказать отчет, получить его контент:
Методов извлечения данных значительно больше, чем указано в примерах выше. Если вы используете современную IDE для разработки -- все они будут вам "подсказаны" с подробным описанием.
Тестирование
Для тестирования данного пакета используется фреймворк phpunit
. Для запуска тестов выполните в терминале:
Функциональное тестирование
Так же имеется возможность выполнения некоторых функциональных (выполняющих реальные запросы к сервису B2B API) тестов. Для этого выполните в терминале:
Создайте файл ./tests/env.php
с параметрами, которые будут использоваться клиентом (подробнее об этом смотрите в
разделе "настройка"), указав значение is_test
равным false
. После чего выполните в терминале:
Changes log
Changes log can be found here.
Support
If you will find any package errors, please, make an issue in current repository.
License
This is open-sourced software licensed under the MIT License.
All versions of b2b-api-php with dependencies
ext-json Version *
ext-curl Version *
guzzlehttp/guzzle Version ^6.3
nesbot/carbon Version ^1.22