Маркетплейсы
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