PHPackages                             avto-dev/b2b-api-php - 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. avto-dev/b2b-api-php

Abandoned → [avtocod/b2b-api-php](/?search=avtocod%2Fb2b-api-php)ArchivedLibrary[API Development](/categories/api)

avto-dev/b2b-api-php
====================

PHP package for a working with B2B API service

v2.6.0(6y ago)317.5k11MITPHPPHP ^5.6 || &gt;=7.0

Since Oct 12Pushed 6y agoCompare

[ Source](https://github.com/avto-dev/b2b-api-php)[ Packagist](https://packagist.org/packages/avto-dev/b2b-api-php)[ RSS](/packages/avto-dev-b2b-api-php/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (4)Versions (19)Used By (1)

 [![logo](https://camo.githubusercontent.com/286b71e0e4fa4a7dc11791deb864b52a48b33a367e7ce8ac62ec728b8351cad3/68747470733a2f2f6873746f2e6f72672f776562742f35392f64662f34352f353964663435616136633963623937313330393938382e706e67)](https://camo.githubusercontent.com/286b71e0e4fa4a7dc11791deb864b52a48b33a367e7ce8ac62ec728b8351cad3/68747470733a2f2f6873746f2e6f72672f776562742f35392f64662f34352f353964663435616136633963623937313330393938382e706e67)

---

THIS PACKAGE IS ABANDONED
=========================

[](#this-package-is-abandoned)

And soon will be completely removed. New package is [available here](https://github.com/avtocod/b2b-api-php).

You **must** update your application soon as possible!

---

PHP-клиент для работы с B2B API
-------------------------------

[](#php-клиент-для-работы-с-b2b-api)

[![Version](https://camo.githubusercontent.com/821da981ad8a511acd2932be94e5fe8de93da558e43506da8de7a62b5cebea59/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6176746f2d6465762f6232622d6170692d7068702e7376673f6d61784167653d313830)](https://packagist.org/packages/avto-dev/b2b-api-php)[![Version](https://camo.githubusercontent.com/3cb9ac6dcddd9e1856c837aa86440010e6dd79990da5e9b5d6105ae6cb492405/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6176746f2d6465762f6232622d6170692d7068702e7376673f6c6f6e6743616368653d74727565)](https://packagist.org/packages/avto-dev/b2b-api-php)[![Build Status](https://camo.githubusercontent.com/af99e97c40d683ecff7e040ebf4e2c3dda50bbcd932796c01052ad310f29912f/68747470733a2f2f7472617669732d63692e6f72672f6176746f2d6465762f6232622d6170692d7068702e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/avto-dev/b2b-api-php)[![Coverage](https://camo.githubusercontent.com/596945e8913509a19ff91adac924c98618390bce1c35e6e360f44b4c9e987d5d/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6176746f2d6465762f6232622d6170692d7068702f6d61737465722e7376673f6d61784167653d3630)](https://codecov.io/gh/avto-dev/b2b-api-php/)[![Code quality](https://camo.githubusercontent.com/bdceb41a09f316a004a6c08c44194080da83aafa187b87900915201a430a1d89/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f672f6176746f2d6465762f6232622d6170692d7068702e7376673f6d61784167653d313830)](https://scrutinizer-ci.com/g/avto-dev/b2b-api-php/)[![Downloads count](https://camo.githubusercontent.com/0961962d6e2e213612c4cb815b43178dbec45a9934a2ed4062aedfefee2cac84/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6176746f2d6465762f6232622d6170692d7068702e7376673f6d61784167653d313830)](https://packagist.org/packages/avto-dev/b2b-api-php)[![License](https://camo.githubusercontent.com/86a3d70e6f0494397faa2301098663a7e69e713091c1b08f5f85f2bb395bdb51/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6176746f2d6465762f6232622d6170692d7068702e7376673f6c6f6e6743616368653d74727565)](https://github.com/avto-dev/b2b-api-php/blob/master/LICENSE)

Данный пакет является реализацией клиента для работы с сервисом B2B API, значительно упрощающим работу с последним, предоставляя разработчику внятное API.

Все методы API сопровождены соответствующим `@phpdoc`.

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

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

Для установки данного пакета выполните в терминале следующую команду:

```
$ composer require avto-dev/b2b-api-php "^2.5"
```

> Для этого необходим установленный `composer`. Для его установки перейдите по [данной ссылке](https://getcomposer.org/download/).

> Обратите внимание на то, что необходимо фиксировать мажорную версию устанавливаемого пакета.

Компоненты
----------

[](#компоненты)

Данный пакет состоит из следующих компонентов:

НазваниеОписание[Клиент](./src/Clients/v1/Client.php)Реализует методы обращения к сервису B2B API[HTTP-клиент](./src/HttpClients/AbstractHttpClient.php)Реализует методы осуществления запросов по протоколу `http` *(используется по умолчанию его реализация [`guzzle`](./src/HttpClients/GuzzleHttpClient.php))*[Справочники](./src/References)Содержат основные значения *(такие как типы запросов идентификаторов и так далее)*[Генераторы токенов](./src/Tokens)Производят генерацию токенов *(авторизации на сервисе B2B API - в частности)*[Классы типов данных](./src/Responses/DataTypes)К которым автоматически приводятся возвращаемые от сервиса данные *(которые реализуют дополнительные методы-акцессоры)*, если это возможно. В противном случае всегда возвращается объект типа [`UnknownDataType`](./src/Responses/DataTypes/UnknownDataType.php);Каждый компонент в той или иной мере автономен, и может использоваться отдельно от других при необходимости.

Жизненный цикл запроса
----------------------

[](#жизненный-цикл-запроса)

При создании инстанса клиента производится инициализация 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, и некоторые другие опции -- необходимо передать их в конструктор класса клиента в виде массива определенной структуры. Пример структуры конфигурации вы можете наблюдать ниже:

```
