PHPackages                             justcommunication-ru/outofbox-ru-api-php-sdk - 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. justcommunication-ru/outofbox-ru-api-php-sdk

ActiveLibrary[API Development](/categories/api)

justcommunication-ru/outofbox-ru-api-php-sdk
============================================

Outofbox.ru API PHP SDK

v1.0.7(3y ago)31911MITPHP

Since Aug 12Pushed 1y ago2 watchersCompare

[ Source](https://github.com/JustCommunication-ru/outofbox-ru-api-php-sdk)[ Packagist](https://packagist.org/packages/justcommunication-ru/outofbox-ru-api-php-sdk)[ RSS](/packages/justcommunication-ru-outofbox-ru-api-php-sdk/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (6)Versions (9)Used By (0)

Outofbox.ru API PHP SDK
=======================

[](#outofboxru-api-php-sdk)

[![Latest Stable Version](https://camo.githubusercontent.com/9ed8573ae3a76ecfa1fb8202c53c027b80d9d40a3b75ce77e3543037e51c3345/68747470733a2f2f706f7365722e707567782e6f72672f6a757374636f6d6d756e69636174696f6e2d72752f6f75746f66626f782d72752d6170692d7068702d73646b2f76)](//packagist.org/packages/justcommunication-ru/outofbox-ru-api-php-sdk)[![Latest Unstable Version](https://camo.githubusercontent.com/3e3c4e92349f4e541e994df21d434acc7964c19e779e32760c052a12b72c46d2/687474703a2f2f706f7365722e707567782e6f72672f6a757374636f6d6d756e69636174696f6e2d72752f6f75746f66626f782d72752d6170692d7068702d73646b2f762f756e737461626c65)](https://packagist.org/packages/justcommunication-ru/outofbox-ru-api-php-sdk)[![Total Downloads](https://camo.githubusercontent.com/1254fa7ebbb4e0df01aaf103e7f7e99b3ff522eae4a7e0eab4012c4a2c89a814/68747470733a2f2f706f7365722e707567782e6f72672f6a757374636f6d6d756e69636174696f6e2d72752f6f75746f66626f782d72752d6170692d7068702d73646b2f646f776e6c6f616473)](//packagist.org/packages/justcommunication-ru/outofbox-ru-api-php-sdk)[![License](https://camo.githubusercontent.com/c4db498b953e5e32b33ff94ac881c022ac02e48aa2a95555675874e3b7f6a06a/687474703a2f2f706f7365722e707567782e6f72672f6a757374636f6d6d756e69636174696f6e2d72752f6f75746f66626f782d72752d6170692d7068702d73646b2f6c6963656e7365)](https://packagist.org/packages/justcommunication-ru/outofbox-ru-api-php-sdk)

PHP SDK для сайтов и интернет-магазинов на платформе outofbox.ru

- [Установка](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
- [Использование](#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
- [Методы](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B)
    - [Токен авторизации](#%D1%82%D0%BE%D0%BA%D0%B5%D0%BD-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8)
    - [Список позиций каталога](#%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D0%B9-%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0)
    - [Просмотр позиции каталога](#%D0%BF%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80-%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D0%B8-%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0)
    - [Список категорий товаров](#%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2)
    - [Список филиалов](#%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D1%84%D0%B8%D0%BB%D0%B8%D0%B0%D0%BB%D0%BE%D0%B2)
    - [Заказы/Заявки](#%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D1%8B%D0%B7%D0%B0%D1%8F%D0%B2%D0%BA%D0%B8)
        - [Создание заказа/заявки](#%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0%D0%B7%D0%B0%D1%8F%D0%B2%D0%BA%D0%B8)
        - [Информация о заказе/заявке](#%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F-%D0%BE-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B5%D0%B7%D0%B0%D1%8F%D0%B2%D0%BA%D0%B5)
- [Обработка ошибок](#%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA)
- [Настройка HTTP клиента](#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-http-%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%B0)
- [Логирование](#%D0%BB%D0%BE%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
- [Тесты](#%D1%82%D0%B5%D1%81%D1%82%D1%8B)

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

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

`composer require justcommunication-ru/outofbox-ru-api-php-sdk`

Использование
-------------

[](#использование)

```
$client = new OutofboxAPIClient('https://domain.ru', 'email', 'token');
```

`https://domain.ru` – домен вашего сайта на платформе outofbox.ru

`email` — имя пользователя или email. Уровень доступа аккаунта должен быть не менее `Сотрудник`

`token` — аутентификационный токен

Методы
------

[](#методы)

### Токен авторизации

[](#токен-авторизации)

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

```
$client = new OutofboxAPIClient('https://domain.ru', 'username', ''); // обязательно передать пустой token

$token = $client->getAuthToken($password);

var_dump($token);
```

`$password` – пароль пользователя

Внимание! Данный метод не предназначен для запроса на боевом окружении! Предполагается, что если вам не известен токен пользователя, то необходимо его запросить и далее работать исключительно с токеном авторизации. Не храните пароль пользователя в открытых источниках!

Если существует риск утечки токена, то рекомендуется поменять пароль пользователя и запросить токен еще раз.

### Список позиций каталога

[](#список-позиций-каталога)

```
$request = new ProductsListRequest();

$request
    ->setImagesSizes([
        'thumbnail' => [
            'fs' => 'ofb-320-240'
        ]
    ])
;

$response = $client->sendProductsListRequest($request);

foreach ($response->getProducts() as $product) {
    echo $product->getTitle() . ' ' . $product->getFieldValue('Марка') . ' ' . $product->getFieldValue('Модель') . "\n";
    if ($product->withImages()) {
        echo $product-getImages()[0]->getUrl('thumbnail') . "\n";
    }
}
```

#### Наличие на складах (Если подключен Outofbox.Склад)

[](#наличие-на-складах-если-подключен-outofboxсклад)

```
$request = new ProductsListRequest();
$request
    ->setInStock(true) // только в наличии на любом складе
    ->setInStock(false) // только НЕ в наличии на любом складе

    ->setStock(5643) // только в наличии в филиале с номером 5643
    ->setStocks([ 5643, 5644 ]) // только если позиция есть в наличии в филиалах 5643 или 5644
;
```

### Просмотр позиции каталога

[](#просмотр-позиции-каталога)

```
$request = ProductViewRequest::withProductID($id);
$request
    ->addImageSize('medium', [
        'fs' => 'ofb-640'
    ])
;

$response = $client->sendProductViewRequest($request);
$product = $response->getProduct();

echo $product->getTitle() . ' ' . $product->getFieldValue('Марка') . ' ' . $product->getFieldValue('Модель') . "\n";
if ($product->withImages()) {
    echo $product-getImages()[0]->getUrl('medium') . "\n";
}
```

Список категорий товаров
------------------------

[](#список-категорий-товаров)

### Верхний уровень категорий:

[](#верхний-уровень-категорий)

```
$request = new CategoriesListRequest();
$response = $client->sendCategoriesListRequest($request);

foreach ($response->getCategories() as $category) {
    echo $category->getFullTitle(' > ') . "\n";
}
```

### Подкатегории:

[](#подкатегории)

```
$request = new CategoriesListRequest(123); // список категорий для подкатегории с идентификатором 123
```

или

```
$request = new CategoriesListRequest();
$request->setParentId(123);
```

```
$response = $client->sendCategoriesListRequest($request);

foreach ($response->getCategories() as $category) {
    echo $category->getFullTitle(' > ') . "\n";
}
```

Важно! Данный метод не подходит для выбора всего дерева подкатегорий рекурсивными вызовами! Вместо этого надо использовать метод, который может вернуть сразу все дерево (@todo)

Список филиалов
---------------

[](#список-филиалов)

```
$request = new StoresListRequest();
$response = $client->sendStoresListRequest($request);

foreach ($response->getStores() as $store) {
    echo $store->getName() . ' (№' . $store->getId() . ')' . "\n";
}
```

Заказы/Заявки
-------------

[](#заказызаявки)

- [Создание заказа/заявки](#%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0%D0%B7%D0%B0%D1%8F%D0%B2%D0%BA%D0%B8)
- [Информация о заказе/заявке](#%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F-%D0%BE-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B5%D0%B7%D0%B0%D1%8F%D0%B2%D0%BA%D0%B5)

### Создание заказа/заявки

[](#создание-заказазаявки)

```
$request = new CreateShopOrderRequest();

$request
    ->setPhoneNumber('89688888888') // номер телефона
    ->setStoreId(123) // идентификатор филиала/склада
    // состав заказа
    ->setProducts([
        ProductShopOrderItem::create(1271231, 1), // Позиция с id = 1271231, 1 шт.
        ProductShopOrderItem::create(1271232, 2)  // Позиция с id = 1271232, 2 шт.
    ])
;

// Можно добавить еще один товар в список
$request->addProduct(ProductShopOrderItem::create(1271233, 3));

$response = $client->sendCreateShopOrderRequest($request);

echo 'Заказ создан, его номер: ' . $response->getShopOrder()->getNumber();
```

@todo: описать все доступные поля заказа (адреса доставки, данные клиента и т. д.)

### Информация о заказе/заявке

[](#информация-о-заказезаявке)

```
use Outofbox\OutofboxSDK\API\ShopOrders\GetShopOrderRequest;
use Outofbox\OutofboxSDK\OutofboxAPIClient;

$client = new OutofboxAPIClient($domain, $username, $api_token);

// через объект запроса
$request = new GetShopOrderRequest();
$request->setOrderNumber('8189-071122');

$response = $client->sendGetShopOrderRequest($request);

$shopOrder = $response->getShopOrder();

// либо короче
$shopOrder = $client->getShopOrder('8189-071122');

$shopOrder->number; // номер заказа
$shopOrder->delivery_price; // стоимость доставки

if ($shopOrder->status) {
    $shopOrder->status->id; // идентификатор статуса заказа
    $shopOrder->status->value; // наименование статуса заказа
} else {
    // статус "Новый"
}

if ($shopOrder->deliveryMethod) {
    $shopOrder->deliveryMethod->id; // идентификатор способа доставки
    $shopOrder->deliveryMethod->value; // наименование способа доставки
}

if ($shopOrder->paymentMethod) {
    $shopOrder->paymentMethod->id; // идентификатор способа оплаты
    $shopOrder->paymentMethod->value; // наименование способа оплаты
}

// позиции заказа
foreach ($shopOrder->items as $shopOrderItem) {
    $shopOrderItem->id; // идентификатор позиции
    $shopOrderItem->title; // наименование позиции
    $shopOrderItem->price; // стоимость единицы позиции
    $shopOrderItem->quantity; // количество
    $shopOrderItem->amount; // общая стоимость
    $shopOrderItem->item_weight; // вес одной позиции
}
```

Обработка ошибок
----------------

[](#обработка-ошибок)

При ошибке будет сгенерировано исключение `OutofboxAPIException`

```
try {
    $client->sendProductViewRequest(ProductViewRequest::withProductID($id));
} catch (OutofboxAPIException $e) {
    $logger->error('Outofbox ERROR: ' . $e->getMessage());
}
```

Настройка HTTP клиента
----------------------

[](#настройка-http-клиента)

### Способ №1: передача массива параметров

[](#способ-1-передача-массива-параметров)

```
$client = new OutofboxAPIClient('https://domain.ru', 'email', 'token', [
    'proxy' => 'tcp://localhost:8125',
    'timeout' => 6,
    'connect_timeout' => 4
]);
```

Список доступных параметров:

### Способ №2: передача своего `\GuzzleHttp\Client`

[](#способ-2-передача-своего-guzzlehttpclient)

Настройте своего http клиента:

```
// Http клиент с логгированием всех запросов

$stack = HandlerStack::create();
$stack->push(Middleware::log($logger, new MessageFormatter(MessageFormatter::DEBUG)));

$httpClient = new \GuzzleHttp\Client([
    'handler' => $stack,
    'timeout' => 6
]);
```

и передайте его аргументом конструктора:

```
$client = new OutofboxAPIClient('https://domain.ru', 'email', 'token', $httpClient);
```

либо сеттером:

```
$client = new OutofboxAPIClient('https://domain.ru', 'email', 'token');
$client->setHttpClient($httpClient);
```

Логирование
-----------

[](#логирование)

В `$client` можно передать свой `Psr\Logger`.

```
$client->setLogger($someLogger);
```

По-умолчанию, логирование отключено.

###  Health Score

30

↑

LowBetter than 64% of packages

Maintenance27

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~40 days

Recently: every ~60 days

Total

8

Last Release

1450d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2c85524bc58444ab554ec47663bd1716ef1db841d7e245a4569f67c7da8e2d0c?d=identicon)[wiistriker](/maintainers/wiistriker)

---

Top Contributors

[![wiistriker](https://avatars.githubusercontent.com/u/967817?v=4)](https://github.com/wiistriker "wiistriker (37 commits)")

---

Tags

apisdkoutofboxoutofbox.ru

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/justcommunication-ru-outofbox-ru-api-php-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/justcommunication-ru-outofbox-ru-api-php-sdk/health.svg)](https://phpackages.com/packages/justcommunication-ru-outofbox-ru-api-php-sdk)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M647](/packages/sylius-sylius)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[api-platform/symfony

Symfony API Platform integration

323.2M67](/packages/api-platform-symfony)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[api-platform/serializer

API Platform core Serializer

223.4M31](/packages/api-platform-serializer)[apigee/apigee-client-php

Client library for connecting to the Apigee Edge API.

27558.7k3](/packages/apigee-apigee-client-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
