cdekmarketteam / moysklad

Other
14 stars 19 forks source link

PHP SDK Moysklad API 1.2

Данная библиотека предназначена для удобной работы с API Remap версии 1.2 МоегоСклада. Она содержит набор функций, позволяющий совершать базовые операции над сущностями (создание, чтение, изменение, удаление).

Установка

Пример работы

1. Начало работы

Основной класс, посредством которого осуществляется работа с SDK: MoySklad\ApiClient.

Для того, чтобы начать работу, требуется создать экземпляр этого класса, передав в конструктор поля:

use MoySklad\ApiClient;

$api = new ApiClient('host', true, [
    'login' => 'your_login',
    'password' => 'your_password',
]);

//or

$api = new ApiClient('host', true, [
   'token' => 'your_token',
]);

2. Работа с сущностями

2.1. Получение сущностей

Для доступа к эндпоинтам отдельных сущностей используется метод ApiClient->entity(), который возвращает базовый клиент для сущностей. Этот объект позволяет получить клиент для работы с конкретной сущностью. Например, чтобы получить список всех контрагентов или одного контрагента, достаточно выполнить следующий код:

$counterpartyList = $api->entity()->counterparty()->getList();
$counterparty = $api->entity()->counterparty()->get('id');

Список возможных фильтров:

$params = [ Limit::eq(50), Offset::eq(10), Order::asc('name'), Order::desc('date'), Search::eq('some interesting thing'), EntityFilter::eq('product', $product), EntityFilter::neq('pricetype', $pricetype), StandardFilter::eq('region_id', $regionId), StandardFilter::gte('created', $createdDate), StandardFilter::like('name', 'ame'), ];

$counterpartyList = $api->entity()->counterparty()->getList($params);

Массив фильтров передается аргументом при вызове методов клиентов сущностей, там где это возможно.

#### 2.2. Создание сущностей
Чтобы отправить запрос к API на создание сущности, достаточно создать объект класса, заполнить необходимые поля, 
и затем при помощи соответствующего клиента вызвать метод `create()`, передав в качестве параметра созданный объект:
```php
$product = new Product();
$product->name = 'Новый продукт';

$product = $api->entity()->product()->create($product);

После выполнения кода и при успешном создании вернется объект product, с заполенными полями, полученными из ответа API (id, href и др.).

2.3. Изменение сущностей

Для изменения уже созданной сущности используются метод editById() или editByEntity() клиента сущности:

$product->name = 'new name';
$product = $api->entity()->product()->update($product);

2.4. Вложенные сущности

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

$counterpartyAccountsList = $api->entity()->counterparty()->getAccountsList('counterparty_id');

$counterpartyAccount = $api->entity()->counterparty()->getAccount('counterparty_id', 'account_id');

Полностью аналогично производится работа с остальными методами.

В некоторых сущностях имеются свойства - вложенные сущности (например у контрагента есть полный адрес), такие вложенные сущности, как полный адрес, при ответе с API заполняются только метаданными, для того чтобы заполнить ее основные свойства необходимо вызвать метод fetch():

$counterparty = $api->entity()->counterparty()->get('id');
$addressCity = $counterparty->legalAddressFull->city; // null

$counterparty->legalAddressFull->fetch();
$addressCity = $counterparty->legalAddressFull->city; // название города

Метод fetch() есть у каждой сущности, его можно использовать и для простого обновления сущности.

Дальнейшее знакомство

Список доступных методов и сущностей, а также накладываемые ограничения по работе с API можно узнать в Moysklad API 1.2 Doc