本文基于京东宙斯开放平台(JD Open API)的 jingdong.ware.product.detail.search.get 接口,提供商品详情数据获取的完整技术方案,包含参数说明、代码实现及实战避坑指南。
一、接口功能与权限
核心能力
获取商品SKU的完整信息,包括标题、价格、库存、促销活动、主图、详情页描述等;
支持批量查询(最多50个SKU/次)及多维度字段筛选;
返回数据包含京东自营与第三方店铺商品(需权限覆盖)。
权限要求
注册京东宙斯开发者账号,创建应用并申请 商品详情读取 权限;
需完成企业资质认证(个人开发者权限受限)。
二、接口参数说明
参数 类型 必填 描述
method String 是 固定值:jingdong.ware.product.detail.search.get
sku_ids String 是 商品SKU列表,多个ID用英文逗号分隔(如 12345,67890)
fields String 否 指定返回字段(默认全量),如 wareId,title,price,imagePath
access_token String 是 OAuth2.0令牌,通过授权流程获取(有效期24小时)
app_key String 是 应用身份标识,从开放平台控制台获取
timestamp String 是 请求时间戳(格式 yyyy-MM-dd HH:mm:ss),服务端校验时效性
三、Python代码示例(OAuth2.0 + 签名)
python
Copy Code
import requests
import hashlib
import time
from urllib.parse import quote
# 配置参数
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
sku_ids = "12345,67890" # 示例SKU
access_token = "YOUR_ACCESS_TOKEN"
# 生成签名
def jd_sign(params):
sorted_params = sorted(params.items(), key=lambda x: x[0])
param_str = app_secret + ''.join([f"{k}{v}" for k, v in sorted_params]) + app_secret
return hashlib.md5(param_str.encode()).hexdigest().upper()
# 请求商品详情
def fetch_jd_product_detail():
base_url = "https://api.jd.com/routerjson"
timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
params = {
"method": "jingdong.ware.product.detail.search.get",
"sku_ids": sku_ids,
"fields": "wareId,title,price,imagePath,stock",
"access_token": access_token,
"app_key": app_key,
"timestamp": timestamp,
"v": "2.0",
"format": "json"
}
# 生成签名并编码
params["sign"] = jd_sign(params)
encoded_params = {k: quote(str(v)) for k, v in params.items()}
response = requests.get(base_url, params=encoded_params)
return response.json()
# 示例调用
data = fetch_jd_product_detail()
print(data)
代码解析:
签名规则:拼接 app_secret + 有序参数键值对 + app_secret 生成MD5签名,确保请求合法性;
URL编码:所有参数值使用 urllib.parse.quote 处理,避免特殊字符导致请求失败;
数据解析:响应为JSON格式,商品信息存储在 result 字段中(需校验 code 状态码)。
四、响应数据结构示例
json
Copy Code
{
"code": "0",
"message": "Success",
"result": [
{
"wareId": "12345",
"title": "京东自营 商品标题示例",
"price": "299.00",
"stock": 100,
"imagePath": "https://img14.360buyimg.com/n1/jfs/t1/xxx.jpg"
},
{
"wareId": "67890",
"title": "第三方店铺商品示例",
"price": "159.00",
"stock": 0,
"imagePath": "https://img14.360buyimg.com/n1/jfs/t1/yyy.jpg"
}
]
}
五、实战注意事项
权限与频率限制
未授权字段:若 fields 包含未申请权限的字段(如促销价 promotionPrice),接口返回空值或报错;
调用频率:默认单应用QPS≤50,超额触发限流(返回 code=14)。
错误码处理
code=11:签名错误 → 检查 app_secret 与参数编码;
code=15:Token失效 → 刷新 access_token;
code=201:SKU不存在 → 验证商品ID有效性。
数据更新延迟
价格与库存信息可能存在1~3分钟缓存,高频监控场景建议结合京东价保接口。
六、应用场景建议
实时比价系统:聚合京东、淘宝、拼多多商品数据,分析价格竞争力;
库存预警工具:监控SKU库存状态,触发自动补货通知(尤其大促期间);
详情页生成器:抓取主图与描述数据,快速生成第三方平台商品页。
参考资源:
京东宙斯开放平台文档
代码中的 YOUR_APP_KEY、YOUR_APP_SECRET 需替换为实际值,并通过OAuth流程获取 access_token。