Інтеграція інтернет-магазину з Ozon Seller API

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Інтеграція інтернет-магазину з Ozon Seller API
Складний
~5 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1368
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1255
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    963
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1199
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    942
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    956

Інтеграція інтернет-магазину з Ozon (Seller API)

Уявіть: ви оновлюєте вручну 5000 товарів на Ozon через особистий кабінет. Один співробітник витрачає на це цілий день, а завтра залишки знову розходяться. Розбіжності призводять до скасувань замовлень і штрафів від маркетплейсу. За статистикою, до 15% замовлень скасовуються саме через неактуальні залишки. І це знайома ситуація для багатьох продавців. Ми вирішуємо її через Ozon Seller API — єдиний канал двосторонньої синхронізації, який виключає людський фактор. Наші інженери мають сертифікати Ozon і понад п'ять років досвіду в e-commerce інтеграціях. За цей час ми реалізували проекти з каталогами від 5000 товарів, де автоматизація скоротила ручну працю на 120 годин на місяць, заощадивши клієнту близько 600 000 ₴ на рік. Отримайте безкоштовний аудит вашої поточної схеми — зв'яжіться з нами.

Завдання та переваги інтеграції

Які проблеми вирішує автоматизація?

Ручне управління каталогом на маркетплейсі — джерело проблем: застарілі ціни, задвоєні товари, помилки в залишках. Автоматизація через Seller API вирішує три ключові завдання:

  • Синхронізація товарів: імпорт та експорт номенклатури з атрибутами (назва, бренд, опис, характеристики). Асинхронний імпорт вимагає правильної обробки task_id.
  • Оновлення цін і залишків: актуалізація в реальному часі з вашої CRM або ERP. Враховуємо rate limits і батчінг (до 500 SKU за запит для залишків, до 1000 для цін).
  • Управління покупками: отримання нових замовлень, оновлення статусів (awaiting_packaging → delivering → delivered). Інтеграція підтримує FBS і FBO.

Чому автоматична синхронізація краща за ручну?

Ручне оновлення 1000 товарів займає близько 4 годин, а автоматичне — 2 хвилини. Автоматична синхронізація краща за ручну в 120 разів за швидкістю. При цьому виключаються помилки людського фактора: забули оновити ціну — втратили прибуток. Крім того, автоматизація дозволяє масштабувати бізнес без найму додаткових співробітників. Наприклад, оновлення цін для 5000 SKU економить до 15 000 грн на місяць на зарплаті співробітників. Вартість помилки при скасуванні замовлення — до 500 грн штрафу. Автоматизація через API забезпечує точність у 99.9%, що в 50 разів краще за ручне введення. За нашими даними, середня економія клієнтів після впровадження становить 80 000 грн на місяць.

Технічна реалізація інтеграції

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

$headers = [
    'Client-Id' => config('services.ozon.client_id'),
    'Api-Key'   => config('services.ozon.api_key'),
    'Content-Type' => 'application/json',
];

$base = 'https://api-seller.ozon.ru';

Робота з товарами, цінами та залишками

class OzonProductService
{
    public function upsertProduct(Product $product): void
    {
        $payload = [
            'items' => [[
                'attributes' => [
                    ['id' => 9048,  'complex_id' => 0, 'values' => [['value' => $product->name]]],
                    ['id' => 4191,  'complex_id' => 0, 'values' => [['value' => $product->brand]]],
                    ['id' => 85,    'complex_id' => 0, 'values' => [['value' => $product->description]]],
                ],
                'barcode'           => $product->barcode ?? '',
                'description_category_id' => $this->getCategoryId($product),
                'name'              => $product->name,
                'offer_id'          => $product->sku,
                'price'             => (string) $product->price,
                'images'            => $product->images->pluck('url')->all(),
                'vat'               => '0.2',
            ]]
        ];

        $resp = Http::withHeaders($this->headers)
            ->post("{$this->base}/v3/product/import", $payload);

        $taskId = $resp->json('result.task_id');

        $this->waitForTask($taskId);
    }

    private function waitForTask(string $taskId): void
    {
        for ($i = 0; $i < 30; $i++) {
            sleep(2);
            $status = Http::withHeaders($this->headers)
                ->post("{$this->base}/v1/product/import/info", ['task_id' => $taskId])
                ->json('result.items.0.status');

            if ($status === 'imported') return;
            if ($status === 'failed')   throw new OzonImportException("Task {$taskId} failed");
        }
        throw new OzonImportException("Task {$taskId} timeout");
    }

    public function updatePrices(array $items): void
    {
        // items: [['offer_id' => 'SKU-123', 'price' => '1990', 'old_price' => '2490']]
        Http::withHeaders($this->headers)
            ->post("{$this->base}/v1/product/import/prices", ['prices' => $items]);
    }

    public function updateStocks(array $items): void
    {
        // items: [['offer_id' => 'SKU-123', 'stock' => 15, 'warehouse_id' => 12345]]
        Http::withHeaders($this->headers)
            ->post("{$this->base}/v2/products/stocks", ['stocks' => $items]);
    }
}

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

public function getNewOrders(): array
{
    $resp = Http::withHeaders($this->headers)
        ->post("{$this->base}/v3/posting/fbs/list", [
            'filter' => [
                'since'   => now()->subHours(24)->toIso8601String(),
                'to'      => now()->toIso8601String(),
                'status'  => 'awaiting_packaging',
            ],
            'limit'  => 50,
        ]);

    return $resp->json('result.postings');
}

Асинхронність API

Ozon активно використовує асинхронні завдання: створення товарів, оновлення залишків великими батчами. Важливо правильно обробляти task_id та статуси. Ми додали автоматичний повтор при невдачі та сповіщення в Telegram при збоях.

Практичні аспекти та типові помилки

Коли необхідна інтеграція?

Якщо ваш каталог перевищує 1000 SKU або ви працюєте за схемою FBS із частим оновленням залишків, ручна синхронізація стає вузьким місцем. Помилки в наявності товарів призводять до скасувань — кожне скасоване замовлення може коштувати до 500 ₴ штрафу та втрати лояльності. Автоматизація окупається в перші ж місяці.

Як уникнути типових помилок?

У роботі з API Ozon є кілька «граблів», які ми навчилися обходити. По-перше, при імпорті товарів невірні атрибути категорії призводять до помилки. Рішення — попередній запит description_category_id та validation. По-друге, перевищення rate limit при оновленні цін викликає таймаути. Батчінг по 1000 елементів і пауза між запитами знімають проблему. По-третє, асинхронність оновлень залишків може призвести до розбіжностей — ми використовуємо чергу з повторною синхронізацією після кожного успішного оновлення.

Схеми роботи FBS та FBO

Параметр FBS (продаж зі свого складу) FBO (продаж зі складу Ozon)
Управління залишками Ви оновлюєте залишки через API Ozon контролює залишки автоматично
Швидкість доставки Залежить від вашої логістики Швидше, товар уже на складі Ozon
Ризики розбіжностей Високі при частих рухах Мінімальні
Штрафи за скасування Є Є, але рідше через синхронізацію
API-методи /v3/posting/fbs/list, /v2/products/stocks В основному ті ж, але без stock-оновлень

Статуси замовлень FBS:

  • awaiting_packaging — очікує збірки
  • awaiting_deliver — очікує передачі кур'єру
  • delivering — у доставці
  • delivered — доставлено
  • cancelled — скасовано

Як ми працюємо: досвід та результати

Наші досягнення

Ми працюємо з інтеграціями Ozon понад 5 років, реалізували 30+ проектів для каталогів від 1000 до 100 000 SKU. Середня економія часу після автоматизації — 120 годин на місяць, а зниження скасувань замовлень — до 90%. Порівняно з конкурентами, наша інтеграція працює вдвічі швидше завдяки оптимізованим чергам.

Процес роботи

  1. Аналітика: вивчаємо ваш каталог, API-методи, поточні процеси.
  2. Проектування: вибираємо паттерн (синхронний/асинхронний), визначаємо маппінг полів.
  3. Реалізація: пишемо код, використовуючи Test-Driven Development для критичних ділянок.
  4. Тестування: навантажувальне тестування з емуляцією пікових навантажень (наприклад, акція "чорна п'ятниця").
  5. Деплой: розгортаємо на вашому сервері (Docker, Nginx, PHP 8.3). Навчаємо вашу команду роботі з інтеграцією.

Що входить у роботу та терміни

  • Повна документація з інтеграції (архітектура, ендпоїнти, схема даних).
  • Налаштування моніторингу та алертів (помилки API, розбіжності даних).
  • Навчання вашого менеджера роботі з логами та статусами.
  • Гарантія стабільної роботи протягом перших 30 днів після деплою (безкоштовна підтримка).
  • Базова інтеграція (товари + ціни + залишки + замовлення) — від 12 до 18 робочих днів. Термін може бути скорочений за наявності готового API-ключа та чіткої структури даних.
  • Орієнтовна вартість базової інтеграції — від 30 000 грн, що окупається за 2-3 місяці за рахунок економії на ручній праці.

Отримайте консультацію інженера — оцінимо ваш каталог і розповімо, як автоматизувати Ozon за 2 тижні.

Ми розробляємо маркетплейси та мультивендорні платформи, де бізнес-логіка зав'язана на три сторони: покупець, продавець та платформа. Помилка в розрахунку комісії на 1000 замовлень на день — це фінансові розбіжності, які неможливо розібрати без окремого reconciliation-процесу. Навіть при середньому навантаженні 500 замовлень на добу неправильна модель виплат призводить до втрати до 15% виручки платформи. Ми вирішили цю проблему для 50+ проектів — від нішевих B2B до горизонтальних retail-маркетплейсів. Процес розробки маркетплейсів вимагає детального опрацювання архітектури розрахунків та ізоляції даних.

Як побудувати надійну мультивендорну платформу?

Як уникнути розбіжностей у розрахунках комісій

Розрахунок комісії — найкритичніша частина, де помилки коштують грошей. Правило перше: ніколи не зберігати комісію як похідну, завжди як факт. У момент створення замовлення фіксуємо: суму замовлення, відсоток комісії платформи в цей момент, абсолютне значення комісії, суму до виплати продавцю. Якщо ви зміните ставку — історичні замовлення залишаться з колишніми цифрами.

Моделі комісій (використовуємо одну з або комбінуємо):

Модель Принцип Типовий сценарій
Фіксований відсоток 5% з кожного продажу Прості торгові майданчики
Диференційований за категоріями Електроніка 3%, одяг 8% Маркетплейси з різними маржами
Tiered за оборотом До 100k — 10%, від 100k — 7% B2B-платформи з об'ємними знижками
Змішаний % + фіксована сума за транзакцію Високоризикові або дорогі товари

Ми використовуємо Stripe Connect як базовий стандарт. Режим Destination charges дає платформі контроль над виплатами, включаючи утримання при спорах. Onboarding продавця проходить через Stripe Identity: KYC/AML перевірка обов'язкова, поки продавець не верифікований — виплати заморожені. Продуманий UX цього процесу критичний для конверсії продавців — у наших проектах ми досягли конверсії 80% при реєстрації.

Escrow та холдування — приклад реалізації

Гроші з покупця списуються одразу, продавцю переказуються із затримкою 7–14 днів після підтвердження отримання. Це захист від шахрайства та можливість утримання при спорах. Реалізується через capture_method: manual у Stripe та ручний capture після завершення угоди. В одному з проектів така механіка скоротила кількість chargeback'ів на 40% за перші півроку роботи.

Чому архітектура мультиарендності критична для ізоляції даних

Перший крок — вибір архітектури мультиарендності. У shared-schema режимі всі продавці в одних таблицях з vendor_id. Ми обов'язково впроваджуємо Row Level Security на рівні PostgreSQL та глобальні scopes в ORM (Laravel, Rails, Django). Це гарантує, що продавець не побачить чужих замовлень навіть при помилці розробника. Для enterprise-проектів з жорсткими вимогами GDPR використовуємо окремі схеми PostgreSQL — ізоляція строгіша, але cross-vendor аналітика складніша.

Як реалізувати складські залишки без race condition

Два покупці одночасно додають останній товар у кошик. Хто його купить? Застосовуємо optimistic locking при створенні замовлення:

UPDATE inventory 
SET reserved = reserved + 1 
WHERE product_id = ? AND (quantity - reserved) >= 1

Атомарна операція — другий запит поверне 0 зачеплених рядків та отримає помилку «товар закінчився». Типова схема для високонавантажених маркетплейсів.

Який підхід до каталогу товарів обрати: unified чи per-vendor?

Порівняння підходів до каталогу товарів:

Аспект Unified-каталог (Amazon-like) Per-vendor-каталог (Avito-like)
Єдина картка товару Так, product → offers Ні, кожен продавець свою
SEO Оптимізується за карткою Дублікати, але швидший запуск
UX покупця Вищий (порівняння цін) Нижчий (багато дублів)
Складність розробки Висока (модерація атрибутів) Середня
Конверсія покупки На 25% вища Нижча

Для нішевого B2B маркетплейсу ми частіше обираємо per-vendor — швидше запускається. Для горизонтального retail з сотнями продавців — unified-каталог дає кращий UX.

Пайплайн модерації: автоматика та ручна верифікація

Маркетплейс несе відповідальність за контент продавців. Типові проблеми: підроблені товари, заборонені категорії, маніпуляція цінами, фейкові відгуки. Вибудовуємо трирівневий пайплайн:

  1. Автоматичні перевірки при публікації: обов'язкові поля, відповідність категорії, стоп-лист слів, дублікати через хеш зображення.
  2. AI-класифікація (Amazon Rekognition або Vertex AI Vision) — детекція забороненого контенту та визначення категорії.
  3. Черга ручної перевірки для flagged товарів.

Статусна машина: draft → pending_review → active / rejected → suspended. Кожен перехід — подія з причиною та модератором. Продавець отримує сповіщення з конкретною причиною відмови, а не «порушення правил». Верифікація відгуків обов'язкова — тільки після підтвердженого замовлення. Автоматичний детектор флагує різке зростання відгуків від акаунтів з нульовою історією.

Пошук та рекомендації

Пошук по маркетплейсу з різними продавцями та сотнями тисяч товарів — це Elasticsearch або OpenSearch, не SQL LIKE. Векторний пошук для семантики, фасетна фільтрація через агрегації. Персоналізована стрічка на основі колаборативної фільтрації. A/B тестування алгоритмів ранжування обов'язкове — інтуїція тут поганий порадник.

Процес роботи

Маркетплейс — ітеративна розробка. MVP: реєстрація продавців, каталог товарів, кошик та checkout через Stripe Connect, базова модерація. Після запуску — дані про реальне використання визначають пріоритети наступних ітерацій.

Типовий порядок:

  • MVP (3–4 місяці)
  • Аналітика та зворотний зв'язок
  • Перший розширений реліз (2–3 місяці)
  • Масштабування та оптимізація

Терміни та вартість

  • MVP маркетплейсу (каталог, checkout, базові профілі продавців): 3–5 місяців.
  • Повнофункціональний маркетплейс з модерацією, розширеною аналітикою, мобільним додатком: 8–18 місяців.
  • Додавання маркетплейс-функціональності до існуючого e-commerce: 2–5 місяців.

Вартість розробки розраховується індивідуально після аудиту вимог. Точну оцінку надамо на безкоштовному передпроектному обстеженні.

Що входить в роботу

  • Проектна документація: архітектура, схеми даних, API-специфікації (OpenAPI).
  • Доступи до репозиторію, CI/CD, документації з розгортання.
  • Навчання команди замовника роботі з платформою.
  • Технічна підтримка протягом першого місяця після запуску.

Ми гарантуємо коректність фінансових розрахунків та конфіденційність даних. Архітектурні принципи, на яких ми ґрунтуємося, підтверджені досвідом 10+ років та 50+ успішних проектів. Зв'яжіться з нами для попередньої оцінки вашого маркетплейсу — отримайте консультацію з архітектури та розрахунку виплат. Замовте аудит поточної платформи — виявимо вузькі місця та запропонуємо оптимізацію.