×

Ozon商品详情接口:批量阈值管控与库存变体数据归一化方案

Ace Ace 发表于2026-09-16 17:40:43 浏览17 评论0

抢沙发发表评论

Ozon Seller商品详情接口是跨境商家商品同步、库存监控、变体SKU管理的核心接口。网络现有教程多为单商品简易调用演示,完全忽略平台生产级核心约束:单次批量查询最大100个商品ID限制、库存多状态字段混淆、变体规格嵌套层级混乱、下架商品残留脏数据干扰等问题。本文跳出基础调用逻辑,主打批量参数合规管控、库存分层解析、变体数据扁平化、异常容错过滤,提供一套可直接用于ERP定时同步的稳定方案。
该接口最大开发难点不在于鉴权请求,而是批量采集时参数超限报错、库存数据统计失真、变体规格解析错乱,极易导致业务数据同步异常。

点击获取key和secret
一、生产级完整代码实现

import requests

class OzonItemDetailClient:
    def __init__(self, api_key, client_id):
        self.api_key = api_key
        self.client_id = client_id
        self.url = "https://api.ozon.ru/v2/product/info/list"
        # 平台硬性阈值:单次最大100个ID
        self.max_batch_size = 100

    def batch_detail(self, product_ids):
        # 批量阈值前置拦截
        if len(product_ids) > self.max_batch_size:
            return {"ok":False, "msg":"单次ID数量超出100上限", "data":[]}
        headers = {
            "Api-Key": self.api_key,
            "Client-Id": self.client_id,
            "Content-Type": "application/json"
        }
        payload = {"product_id": product_ids}
        try:
            res = requests.post(self.url, json=payload, headers=headers, timeout=20)
            res.raise_for_status()
            raw_data = res.json()
        except Exception as e:
            return {"ok":False, "msg":f"请求异常:{str(e)}", "data":[]}

        result_list = raw_data.get("result", [])
        clean_data = []
        for item in result_list:
            # 分层解析真实可售库存,剔除锁定库存
            stock_info = item.get("stock", {})
            avail_stock = stock_info.get("available", 0)
            # 扁平化解析变体SKU
            variants = []
            for sku in item.get("skus", []):
                variants.append({
                    "sku_id": sku.get("sku_id"),
                    "sku_price": float(sku.get("price", 0)),
                    "sku_stock": sku.get("available", 0)
                })
            # 字段归一化+过滤无效下架商品
            if avail_stock < 0:
                continue
            clean_data.append({
                "product_id": item.get("product_id"),
                "title": item.get("name", "").strip(),
                "price": float(item.get("price", 0)),
                "category_id": item.get("category_id", 0),
                "available_stock": avail_stock,
                "variants": variants
            })
        return {"ok":True, "data":clean_data}

if __name__ == "__main__":
    client = OzonItemDetailClient("你的ApiKey", "你的ClientId")
    ids = [123456,789012]
    print(client.batch_detail(ids))


二、核心差异化设计思路
1. 批量阈值强约束:提前拦截超100个ID的非法请求,贴合Ozon官方接口规范,从源头规避批量同步报错、任务中断问题。
2. 库存分层精准解析:区分可售库存、锁定库存,摒弃原始总库存字段,解决库存统计虚高、数据失真的业务痛点。
3. 变体数据扁平化:自动拆解多层嵌套SKU数据,统一规格字段结构,适配多规格商品入库、价格监控场景。
4. 脏数据自动过滤:过滤库存异常、无效下架商品,无需人工二次清洗,大幅提升数据同步效率。

群贤毕至

访客