Інтеграція інтернет-магазину з Яндекс.Маркет (API продавця)

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Інтеграція інтернет-магазину з Яндекс.Маркет (API продавця)
Складна
~5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Інтеграція інтернет-магазину з Яндекс.Маркет (API продавця)

Яндекс.Маркет надає Partner API для управління товарами, цінами, рівнями запасів та замовленнями. Підтримує моделі FBS (зберігання у продавця), FBO (зберігання на складі Маркета) та DBS (доставка продавця).

Аутентифікація

Partner API використовує OAuth2-токени. Авторизація через Яндекс OAuth:

class YandexMarketClient
{
    private string $accessToken;
    private int    $campaignId;
    private int    $businessId;

    public function request(string $method, string $path, array $data = []): array
    {
        return Http::withHeaders([
            'Authorization' => "OAuth oauth_token={$this->accessToken}",
            'Content-Type'  => 'application/json',
        ])->{strtolower($method)}(
            "https://api.partner.market.yandex.ru{$path}",
            $data
        )->json();
    }
}

Завантаження/оновлення товарів

public function updateOffers(array $products): void
{
    $offers = array_map(fn($product) => [
        'offerId'     => $product['sku'],
        'name'        => $product['name'],
        'category'    => $product['category_name'],
        'pictures'    => $product['images'],
        'vendor'      => $product['brand'],
        'description' => $product['description'],
        'price'       => ['value' => $product['price'], 'currencyId' => 'RUR'],
        'count'       => $product['stock'],
        'barcodes'    => [$product['barcode']],
    ], $products);

    $this->request('PUT',
        "/businesses/{$this->businessId}/offer-mappings",
        ['offerMappings' => array_map(fn($o) => ['offer' => $o], $offers)]
    );
}

Ціни та запаси

// Оновлення цін
public function updatePrices(array $items): void
{
    $offers = array_map(fn($item) => [
        'id'    => $item['sku'],
        'price' => ['value' => $item['price'], 'currencyId' => 'RUR', 'vat' => 'VAT_20'],
    ], $items);

    $this->request('POST',
        "/campaigns/{$this->campaignId}/offer-prices/updates",
        ['offers' => $offers]
    );
}

// Оновлення запасів FBS
public function updateStocks(array $items, int $warehouseId): void
{
    $skus = array_map(fn($item) => [
        'sku'   => $item['sku'],
        'items' => [['count' => $item['stock'], 'type' => 'FIT']],
    ], $items);

    $this->request('PUT',
        "/campaigns/{$this->campaignId}/offers/stocks",
        ['skus' => $skus, 'warehouseId' => $warehouseId]
    );
}

Обробка замовлень

public function getNewOrders(): array
{
    $resp = $this->request('GET',
        "/campaigns/{$this->campaignId}/orders",
        ['status' => 'PROCESSING', 'substatus' => 'STARTED', 'pageSize' => 50]
    );

    return $resp['orders'] ?? [];
}

public function acceptOrder(int $orderId): void
{
    $this->request('PUT',
        "/campaigns/{$this->campaignId}/orders/{$orderId}/status",
        ['order' => ['status' => 'PROCESSING', 'substatus' => 'READY_TO_SHIP']]
    );
}

Push-повідомлення про замовлення

Яндекс.Маркет підтримує push-повідомлення через налаштування в кабінеті продавця:

Route::post('/webhooks/yandex-market', function (Request $request) {
    $events = $request->input('data');

    foreach ($events as $event) {
        match($event['type']) {
            'ORDER_STATUS_CHANGED' => ProcessYandexOrderStatus::dispatch($event['orderId']),
            default                => null,
        };
    }

    return response()->json(['status' => 'ok']);
});

Терміни

Інтеграція з Яндекс.Маркет Partner API: 12–16 робочих днів.