Интеграция МойСклад с сайтом
МойСклад — облачная система управления товарами, заказами и складом. Популярна у малого и среднего бизнеса как альтернатива 1С: проще в настройке, имеет удобный REST API и не требует локального сервера. Интеграция позволяет синхронизировать каталог, остатки и заказы.
API МойСклад
МойСклад предоставляет REST API (JSON API 1.2). Авторизация через Bearer-токен (Personal Access Token). Базовый URL: https://api.moysklad.ru/api/remap/1.2/.
$client = Http::withToken(env('MOYSKLAD_TOKEN'))
->baseUrl('https://api.moysklad.ru/api/remap/1.2/');
Синхронизация товаров
// Получить список товаров с остатками
$products = $client->get('entity/product', [
'limit' => 100,
'offset' => 0,
'expand' => 'productFolder,images'
])->json()['rows'];
foreach ($products as $p) {
Product::updateOrCreate(
['moysklad_id' => $p['id']],
[
'name' => $p['name'],
'sku' => $p['article'] ?? null,
'price' => $p['salePrices'][0]['value'] / 100, // МойСклад хранит в копейках
'category' => $p['productFolder']['name'] ?? null
]
);
}
Остатки через отчёт
// Остатки по складам
$stock = $client->get('report/stock/all', [
'stockMode' => 'positiveOnly'
])->json()['rows'];
foreach ($stock as $item) {
Product::where('moysklad_id', $item['meta']['href'])
->update(['stock' => $item['stock']]);
}
Создание заказа в МойСклад
$order = $client->post('entity/customerorder', [
'organization' => ['meta' => [
'href' => "https://api.moysklad.ru/api/remap/1.2/entity/organization/{$orgId}",
'type' => 'organization'
]],
'agent' => ['meta' => [
'href' => "https://api.moysklad.ru/api/remap/1.2/entity/counterparty/{$agentId}",
'type' => 'counterparty'
]],
'positions' => array_map(fn($item) => [
'quantity' => $item->quantity,
'price' => $item->unit_price, // в копейках
'assortment' => ['meta' => [
'href' => "https://api.moysklad.ru/api/remap/1.2/entity/product/{$item->moysklad_id}",
'type' => 'product'
]]
], $order->items->toArray())
])->json();
Webhook от МойСклад
МойСклад поддерживает webhooks при изменении документов (заказ обновлён, отгружен). Подписка через API:
$client->post('entity/webhook', [
'url' => 'https://yoursite.ru/webhooks/moysklad',
'action' => 'UPDATE',
'entityType' => 'customerorder'
]);
Готовые библиотеки
МойСклад не имеет официального PHP-SDK, но есть community-библиотеки. Рекомендуется написать тонкую обёртку над HTTP-клиентом — официальный API хорошо задокументирован и редко меняется.
Срок интеграции: 4–7 дней для двусторонней синхронизации товаров, остатков и заказов.







