Skip to content

Маркетплейсы

Narmak ERP интегрирован с тремя маркетплейсами: Wildberries, Ozon и Яндекс Маркет. Интеграция обеспечивает синхронизацию остатков, получение заказов и управление ценами.

Wildberries

Файлы

  • app/marketplace/wb_service.py — основные операции (остатки, заказы, поставки)
  • app/marketplace/wb_marketing.py — управление рекламными кампаниями

Возможности

ОперацияОписание
Получение заказовЗагрузка новых заказов FBO/FBS
Обновление остатковОтправка актуальных остатков на WB-склады
Управление ценамиУстановка/изменение розничных цен
СтатистикаПродажи, возвраты, рейтинг
РекламаУправление кампаниями (wb_marketing.py)

API WB

python
WB_API_BASE = "https://suppliers-api.wildberries.ru"
WB_STATS_API = "https://statistics-api.wildberries.ru"

headers = {
    "Authorization": settings.WB_API_KEY
}

# Получить новые заказы
GET /api/v3/orders/new

# Обновить остатки
POST /api/v3/stocks/{warehouseId}
{
  "stocks": [
    {"sku": "12345678", "amount": 100}
  ]
}

ViewSet

python
class WildberiesProxyViewSet(ViewSet):
    """Проксирование запросов к WB API"""
    def orders(self, request):
        # Получить заказы и создать документы в системе
        ...

    def update_stocks(self, request):
        # Отправить остатки на WB
        ...

Ozon

Файлы

  • app/marketplace/ozon_service.py — основные операции
  • app/marketplace/ozon_view.py — ViewSet и роутинг

Возможности

ОперацияОписание
Получение заказовFBO и FBS заказы
Обновление остатковСклад Ozon
Управление ценамиБазовые и акционные цены
Статусы отправленийТрекинг доставки

API Ozon

python
OZON_API_BASE = "https://api-seller.ozon.ru"

headers = {
    "Client-Id": settings.OZON_CLIENT_ID,
    "Api-Key": settings.OZON_API_KEY,
}

# Получить необработанные заказы
POST /v3/posting/fbo/unfulfilled/list

# Обновить остатки
POST /v1/product/import/stocks
{
  "stocks": [
    {"offer_id": "ART-001", "stock": 50, "warehouse_id": 12345}
  ]
}

Яндекс Маркет

Файл

  • app/marketplace/yandex_market.py

Возможности

ОперацияОписание
Получение заказовDBS и FBY заказы
Обновление остатковОстатки на складе
Подтверждение заказовПринять/отклонить

Синхронизация через Celery

Автоматическая синхронизация запускается по расписанию:

python
# app/marketplace/tasks.py

@app.task
def sync_wb_orders():
    """Каждые 15 минут"""
    ...

@app.task
def sync_ozon_orders():
    """Каждые 15 минут"""
    ...

@app.task
def update_all_marketplace_stocks():
    """Каждые 2 часа — обновление остатков на всех площадках"""
    ...

Маппинг товаров

Товары системы привязываются к SKU маркетплейсов через MarketPlaceToAssortiment:

Ассортимент системы ←→ SKU WB (nmID + sku)
                    ←→ SKU Ozon (product_id + offer_id)
                    ←→ SKU Яндекс Маркет (market_sku)

Управление привязками: Main Office → Маркетплейсы → Привязки.

Frontend: стейт маркетплейсов

typescript
// apps/main-office/src/app/views/pages/market-place/ozon/state/ozon.store.ts
export interface OzonState {
  orders: OzonOrder[]
  products: OzonProduct[]
  isLoading: boolean
}

Переменные окружения

env
# Wildberries
WB_API_KEY=your_wb_api_key

# Ozon
OZON_CLIENT_ID=123456
OZON_API_KEY=your_ozon_api_key

# Яндекс Маркет
YM_OAUTH_TOKEN=your_ym_token
YM_CAMPAIGN_ID=123456