点三  电商OMS/ERP/API帮您串联线上线下订单业务-稳定运行13年【免费试用】

客服热线

400 8080 092

当前位置: 首页 > 资讯 > API接口

电商系统集成B站库存API实现方案

编辑:原创    时间:2025-09-17 16:17:49

对于在B站开设店铺的商家而言,通过API将ERP/WMS系统与平台库存数据打通,是避免缺货超卖的核心手段。B站提供的电商API接口涵盖店铺管理、商品管理、库存管理等全链路功能,支持商家将库存数据精准同步至平台前端,实现“在售商品库存量实时展示-订单触发自动扣减-异常订单即时拦截”的闭环管理。下文将基于B站开放平台规范,详解电商系统集成B站库存API实现方案。

 

基于Python实现B站库存更新接口调用,分增量更新和全量覆盖两个场景,嵌入异常处理与错误码解决方案,确保接口调用的稳定性与可靠性。

 

场景一:增量更新商品库存(mode=1)

适用于高频变动场景(如直播带货过程中实时补货或减库存),通过调整库存偏移量实现动态同步。

 

import requests

import json

 

def update_stock_incremental(access_token, sku_id, offset):

    """

    增量更新B站商品库存

    :param access_token: 用户授权令牌

    :param sku_id: 商品SKU ID

    :param offset: 库存偏移量(正数增加,负数减少)

    :return: 更新结果

    """

    url = "https://member.bilibili.com/arcopen/fn/v2/market/stock/update"

    headers = {

        "Authorization": f"Bearer {access_token}",

        "Content-Type": "application/json",

        "x-bili-timestamp": str(int(time.time())),  # 当前时间戳

        "x-bili-signature-method": "HMAC-SHA256",

        "x-bili-signature-version": "1.0"

    }

    payload = {

        "mode": 1,  # 增量更新模式

        "modify_stock_list": [

            {

                "sku_id": sku_id,

                "zp_entity_stock_offset": offset

            }

        ]

    }

    

    try:

        response = requests.post(url, headers=headers, data=json.dumps(payload))

        response_data = response.json()

        

        if response_data["code"] == 0:

            if not response_data["data"]["failed_skus"]:

                return {"status": "success", "message": "库存更新成功"}

            else:

                return {"status": "partial_failure", "failed_skus": response_data["data"]["failed_skus"]}

        elif response_data["code"] == 4009:

            # 处理权限不足错误:重新申请SHOP_STOCK_INFO权限

            raise PermissionError("Scope权限不足,请重新申请SHOP_STOCK_INFO权限")

        else:

            raise Exception(f"更新失败,错误码:{response_data['code']},信息:{response_data['message']}")

    

    except requests.exceptions.RequestException as e:

        raise Exception(f"网络请求失败:{str(e)}")

    except PermissionError as e:

        # 实际应用中可在此处触发权限申请流程

        raise e

 

# 使用示例:为SKU=1002884494增加15个库存

try:

    result = update_stock_incremental(

        access_token="YOUR_ACCESS_TOKEN",

        sku_id=1002884494,

        offset=15

    )

    print(result)

except Exception as e:

    print(f"操作失败:{str(e)}")

 

场景二:全量覆盖库存(mode=2)

适用于每日库存盘点后的数据同步,需传入SKU当前实际库存总值,覆盖平台原有记录。

 

def update_stock_full(access_token, stock_list):

    """

    全量更新B站商品库存

    :param access_token: 用户授权令牌

    :param stock_list: 库存列表,格式为[{"sku_id": int, "total_stock": int}, ...]

    :return: 更新结果

    """

    url = "https://member.bilibili.com/arcopen/fn/v2/market/stock/update"

    headers = {

        "Authorization": f"Bearer {access_token}",

        "Content-Type": "application/json",

        "x-bili-timestamp": str(int(time.time())),

        "x-bili-signature-method": "HMAC-SHA256",

        "x-bili-signature-version": "1.0"

    }

    # 转换库存列表为接口要求格式

    modify_stock_list = [

        {

            "sku_id": item["sku_id"],

            "zp_entity_stock_offset": item["total_stock"]  # 全量模式下为实际库存总值

        } for item in stock_list

    ]

    payload = {

        "mode": 2,  # 全量更新模式

        "modify_stock_list": modify_stock_list

    }

    

    try:

        response = requests.post(url, headers=headers, data=json.dumps(payload))

        response_data = response.json()

        

        if response_data["code"] == 0 and not response_data["data"]["failed_skus"]:

            return {"status": "success", "message": "全量库存更新成功"}

        elif response_data["code"] == 4009:

            raise PermissionError("Scope权限不足,请重新申请SHOP_STOCK_INFO权限")

        else:

            raise Exception(f"更新失败,错误码:{response_data['code']},信息:{response_data['message']}")

    

    except requests.exceptions.RequestException as e:

        raise Exception(f"网络请求失败:{str(e)}")

 

# 使用示例:全量更新SKU=1002884494(库存50)和SKU=1002884500(库存20)

try:

    result = update_stock_full(

        access_token="YOUR_ACCESS_TOKEN",

        stock_list=[

            {"sku_id": 1002884494, "total_stock": 50},

            {"sku_id": 1002884500, "total_stock": 20}

        ]

    )

    print(result)

except Exception as e:

    print(f"操作失败:{str(e)}")

 

关键注意事项

 

1. 权限管理:首次调用前需在B站开放平台申请SHOP_STOCK_INFO权限,授权流程需用户手动确认。

 

2. 库存精度:全量更新时需确保zp_entity_stock_offset为实际盘点库存值,避免因数据偏差导致超卖风险。

 

3. 失败处理:响应中failed_skus字段会返回更新失败的SKU详情,需针对性排查(如SKU不存在、库存值为负等)。

 

通过上述参数配置与代码实现,电商系统可高效完成与B站平台的库存同步,结合异常处理机制与权限管理流程,确保库存数据的准确性与一致性。想了解更多电商平台接口对接内容,可以咨询点三客服。

50000+企业的共同选择
点三全渠道全链路ERP

免费注册试用

400 8080 092