一、摘要
你所需的微店商品详情 API 是微店开放平台提供的核心接口,用于精准获取单款微店商品的全量详细信息,包括商品基础信息(标题、价格、库存)、规格参数(多规格 SKU、价格、库存)、图文描述、物流信息、售后规则等结构化数据。该接口是微店商品管理、订单履约、数据同步、店铺运营分析的核心能力,需通过微店开发者认证并获取合法的access_token后调用,支持按商品 ID 精准查询,是商品列表 API 的补充(列表查批量,详情查单款全量信息)。
二、接口概述
1. 前置条件
调用微店商品详情 API 前,需完成以下准备工作:
- 创建应用:在开发者后台创建应用并通过审核,获取
appkey(应用 ID)、appsecret(应用密钥); - 获取访问凭证:通过
appkey和appsecret调用授权接口获取access_token(接口调用凭证,有效期约 2 小时); - 权限申请:在应用后台申请「商品信息读取」权限(商品详情 API 依赖该基础权限);
- 获取商品 ID:需提前通过商品列表 API 或微店店铺后台获取目标商品的
item_id(商品唯一标识)。
2. 核心接口信息
| 项 | 说明 |
|---|---|
| 接口方法名 | weidian.item.detail.get |
| 接口地址 | c0b.cc/R4rbK2(注册获取测试账号,Taobaoapi2014添加V) |
| 请求方式 | POST(推荐)/GET |
| 数据格式 | JSON(请求 / 响应均为 UTF-8 编码) |
| 权限要求 | 需申请「商品信息读取」权限,且店铺已授权给应用 |
3. 关键请求参数
| 参数名 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
method | 是 | 字符串 | 接口方法名,固定为weidian.item.detail.get |
access_token | 是 | 字符串 | 接口调用凭证(通过授权接口获取) |
item_id | 是 | 字符串 | 商品 ID(微店商品唯一标识,必填) |
version | 否 | 字符串 | 接口版本,默认1.0 |
4. 响应参数(核心字段)
json
{ "errcode": 0, // 返回码,0表示成功 "errmsg": "success", // 返回信息 "data": { "item_id": "123456789", // 商品ID "title": "XX商品 旗舰款 多规格可选", // 商品标题 "sub_title": "限时优惠 包邮", // 商品副标题 "price": 99.00, // 商品售价(元) "original_price": 129.00, // 商品原价(元) "stock": 1000, // 总库存(多规格时为所有规格库存总和) "main_img": "https://img.weidian.com/xxx.jpg", // 商品主图 "imgs": ["https://img.weidian.com/xxx1.jpg"], // 商品图集 "status": 1, // 商品状态:1-上架、2-下架、3-违规 "category_id": "8888", // 商品分类ID "category_name": "数码配件", // 商品分类名称 "desc": "<p>商品详细描述(HTML格式)</p>", // 商品详情(图文) "specs": [ // 商品规格列表(多规格商品才有) { "spec_id": "98765", // 规格ID "spec_name": "颜色-黑色+容量-256G", // 规格名称 "spec_price": 99.00, // 该规格售价 "spec_stock": 500 // 该规格库存 } ], "delivery_type": 1, // 配送方式:1-快递、2-自提 "freight": 0.00, // 运费(元) "shop_id": "777777", // 所属店铺ID "create_time": 1718000000 // 商品创建时间(时间戳) } }5. 常见错误码说明
| 错误码 | 说明 | 解决方案 |
|---|---|---|
| 0 | 成功 | - |
| 400 | 参数错误(如 item_id 为空) | 检查item_id是否正确、必填参数是否完整 |
| 401 | access_token 无效 / 过期 | 重新调用授权接口获取access_token |
| 403 | 权限不足 / 店铺未授权 | 申请商品详情权限,确认店铺已授权给应用 |
| 404 | 商品不存在 / 已删除 | 检查item_id是否正确,商品是否仍存在 |
| 429 | 接口调用频率超限 | 降低调用频率(微店单应用 QPS 约 5 次 / 秒) |
三、Python 请求示例
1. 前置准备
安装请求库(若未安装):
bash
pip install requests2. 完整调用代码
python
import requests import json import time # 配置参数 API_URL = "c0b.cc/R4rbK2 wechatid:Taobaoapi2014 def get_weidian_access_token(appkey, appsecret): """ 获取微店接口调用凭证access_token(基础步骤) :param appkey: 微店开放平台appkey :param appsecret: 微店开放平台appsecret :return: access_token(str)/ None """ token_url = "https://api.weidian.com/oauth/access_token" token_params = { "appkey": appkey, "appsecret": appsecret, "grant_type": "client_credential" # 客户端凭证模式(微店基础授权模式) } try: # 发送GET请求获取token response = requests.get( token_url, params=token_params, timeout=10, headers={"Content-Type": "application/json;charset=UTF-8"} ) response.raise_for_status() # 抛出HTTP错误(如404/500) result = response.json() if result.get("errcode") == 0: access_token = result.get("access_token") print(f"获取access_token成功:{access_token[:10]}...(有效期2小时)") return access_token else: print(f"获取token失败:{result.get('errmsg')}(错误码:{result.get('errcode')})") return None except requests.exceptions.RequestException as e: print(f"获取token网络异常:{str(e)}") return None def get_weidian_item_detail(access_token, item_id): """ 调用微店商品详情API获取单商品全量信息 :param access_token: 接口调用凭证 :param item_id: 商品ID :return: 商品详情字典 / None """ # 接口地址 api_url = "https://api.weidian.com/router/rest" # 构造请求参数 request_data = { "method": "weidian.item.detail.get", "access_token": access_token, "item_id": item_id, "version": "1.0" } try: # 发送POST请求(微店推荐POST,参数更安全) response = requests.post( api_url, data=json.dumps(request_data), # JSON格式提交参数 headers={"Content-Type": "application/json;charset=UTF-8"}, timeout=15 ) response.raise_for_status() result = response.json() # 处理响应结果 if result.get("errcode") == 0: return result["data"] # 返回商品详情核心数据 else: print(f"获取商品详情失败:{result.get('errmsg')}(错误码:{result.get('errcode')})") return None except requests.exceptions.RequestException as e: print(f"请求商品详情接口异常:{str(e)}") return None except KeyError as e: print(f"响应数据格式异常,缺少字段:{str(e)}") return None # 主程序调用示例 if __name__ == "__main__": # 替换为你的微店开放平台信息 WD_APPKEY = "你的appkey" WD_APPSECRET = "你的appsecret" # 替换为你要查询的商品ID TARGET_ITEM_ID = "你的商品ID(如123456789)" # 1. 获取access_token access_token = get_weidian_access_token(WD_APPKEY, WD_APPSECRET) if not access_token: exit("无法获取access_token,程序终止") # 2. 调用商品详情API item_detail = get_weidian_item_detail(access_token, TARGET_ITEM_ID) # 3. 解析并打印商品详情 if item_detail: print("="*80) print("微店商品详情信息:") print(f"商品ID:{item_detail.get('item_id')}") print(f"商品标题:{item_detail.get('title')}") print(f"售价:¥{item_detail.get('price')}(原价:¥{item_detail.get('original_price')})") print(f"总库存:{item_detail.get('stock')} 件") print(f"商品状态:{'上架' if item_detail.get('status') == 1 else '下架/违规'}") print(f"所属分类:{item_detail.get('category_name')}") print(f"运费:¥{item_detail.get('freight')}") # 解析多规格信息(如有) specs = item_detail.get('specs', []) if specs: print("\n商品规格信息:") for idx, spec in enumerate(specs, 1): print(f" 规格{idx}:{spec.get('spec_name')} | 价格:¥{spec.get('spec_price')} | 库存:{spec.get('spec_stock')}件") print("="*80)3. 代码关键说明
- access_token 获取:
client_credential是微店基础授权模式,适合店铺自身应用调用;若需调用其他店铺商品数据,需使用授权码模式(authorization_code),需用户授权; - 参数提交方式:微店 API 推荐使用
POST+JSON 格式提交参数,避免GET参数暴露风险; - 异常处理:覆盖了网络超时、HTTP 错误、响应字段缺失等常见问题,新手可直接复用;
- 多规格解析:商品详情的
specs字段仅多规格商品返回,单规格商品该字段为空,代码做了兼容处理。
四、结语
微店商品详情 API 是获取单商品全量数据的核心接口,使用时需重点关注以下几点:
- access_token 有效期:
access_token有效期约 2 小时,生产环境需添加「token 过期自动重新获取」逻辑(如判断错误码 401 时重新调用 token 接口); - 参数准确性:
item_id是唯一标识,需确保与商品列表 API 返回的 ID 一致,否则会返回 404 错误; - 数据解析兼容:部分商品无副标题、多规格等字段,解析时需用
get()方法(如item_detail.get('sub_title', ''))避免 KeyError; - 调用频率限制:微店开放平台对单应用有 QPS 限制(约 5 次 / 秒),批量查询多商品详情时,需添加
time.sleep(0.2)等延时; - 数据合规:获取的商品详情数据仅可用于店铺自身运营、订单处理等合规场景,禁止未经授权的商用或爬虫滥用。
如需获取最新接口规范,建议随时查阅平台,微店会不定期更新接口字段(如新增物流、售后字段),需及时适配。
总结
- 调用微店商品详情 API 的核心:先获取有效
access_token,再传入正确的item_id,参数格式需为 JSON; - 关键兼容点:处理多规格 / 单规格商品差异、
access_token过期重获取、空字段解析; - 实用扩展:可基于示例代码添加数据存储(如保存到 CSV / 数据库)、批量查询多商品详情、价格 / 库存监控等功能。
若需实现 “商品列表→批量获取详情→数据汇总” 的完整流程,可将本示例与之前的「微店商品列表 API」代码结合,循环调用商品详情接口即可。