AI自主代理能解千禧年难题吗?能力边界深度测绘
2026/6/7 10:13:24
京东商品详情 Pro 接口(以下简称 “Pro 接口”)是京东开放平台 / 京东联盟提供的高级版商品数据接口,相比基础版接口,可返回更全维度的商品信息(如 SKU 级价格、精细化参数、多维度图片 / 视频、营销信息、库存详情等),适用于电商分析、竞品监控、供应链管理等场景。以下是完整的接入流程和规范:
竞品监控、电商比价系统、供应链数据分析、商品数字化建档、营销决策支撑等。
京东开放平台 / 京东联盟中,Pro 接口的核心标识为:
jd.union.open.goods.detail.pro.get(京东联盟主推)/taobao.item.get.pro(京东开放平台对标版,需以平台实际展示为准);Pro 接口仅对企业主体开放(个人开发者无权限),需完成以下步骤:
App Key和App Secret(核心密钥,需妥善保管)。| 配置项 | 说明 |
|---|---|
| 接口请求地址 | 京东联盟:https://api.jd.com/routerjson(统一网关);开放平台:https://eco.jd.com/router/rest |
| 请求方式 | GET/POST(推荐 POST,参数较多时避免 URL 长度限制) |
| 数据格式 | 请求 / 响应均为 JSON 格式 |
| 字符编码 | UTF-8 |
| 签名方式 | MD5(必填,验证请求合法性) |
京东 Pro 接口要求所有请求必须携带签名(sign参数),生成规则如下:
sign参数本身,将所有请求参数(包括公共参数 + 接口业务参数)按参数名 ASCII 码升序排序;plaintext
签名字符串 = App Secret + 排序后的参数键值对拼接(key1value1key2value2...) + App Secret示例:参数app_key=123、timestamp=2025-12-16 10:00:00、skuId=100012345678,App Secret 为abc123,则拼接后:
plaintext
abc123app_key123skuId100012345678timestamp2025-12-16 10:00:00abc123将拼接后的字符串做 MD5 加密,转大写,即为sign参数值。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| method | String | 是 | 接口名称,如jd.union.open.goods.detail.pro.get |
| app_key | String | 是 | 应用的 App Key(创建应用后获取) |
| timestamp | String | 是 | 请求时间,格式:YYYY-MM-DD HH:mm:ss(东八区时间) |
| format | String | 是 | 响应格式,固定为json |
| v | String | 是 | 接口版本,固定为1.0(以官方最新版本为准) |
| sign_method | String | 是 | 签名方式,固定为md5 |
| sign | String | 是 | 按签名规则生成的签名字符串 |
| param_json | String | 是 | 业务参数 JSON 字符串(如 SKU ID、字段筛选等) |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| skuId | String | 是 | 京东商品 SKU ID(商品详情页 URL 中item.jd.com/后的数字) |
| fields | String | 否 | 需返回的字段列表(Pro 接口默认返回全字段,可指定筛选,如title,price,skus) |
| extParams | String | 否 | 扩展参数(如是否返回视频、历史价格,以官方文档为准) |
python
运行
# 示例:构造公共参数+业务参数 import json from datetime import datetime # 公共参数 public_params = { "method": "jd.union.open.goods.detail.pro.get", "app_key": "你的App Key", "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "1.0", "sign_method": "md5" } # 业务参数 business_params = { "skuId": "100012345678", # 目标商品SKU ID "fields": "title,price,skus,params,images,stock,promotion" # 需返回的字段 } # 拼接param_json public_params["param_json"] = json.dumps(business_params, ensure_ascii=False)python
运行
import hashlib def generate_sign(params, app_secret): # 按ASCII升序排序参数 sorted_params = sorted(params.items(), key=lambda x: x[0]) # 拼接签名字符串 sign_str = app_secret for key, value in sorted_params: sign_str += f"{key}{value}" sign_str += app_secret # MD5加密并转大写 sign = hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper() return sign # 生成sign并添加到参数中 app_secret = "你的App Secret" public_params["sign"] = generate_sign(public_params, app_secret)python
运行
import requests # 接口网关地址 api_url = "https://api.jd.com/routerjson" # 发送POST请求(推荐) response = requests.post( api_url, data=public_params, timeout=15, headers={"Content-Type": "application/x-www-form-urlencoded; charset=utf-8"} ) # 解析响应 result = response.json() print(json.dumps(result, ensure_ascii=False, indent=2))Pro 接口成功响应示例(核心字段):
json
{ "code": 200, "msg": "success", "data": { "skuId": "100012345678", "title": "京东自营 某商品名称", "price": { "currentPrice": "299.00", // 当前售价 "originalPrice": "399.00", // 原价 "couponPrice": "279.00" // 券后价 }, "skus": [ // SKU维度数据 { "skuId": "100012345679", "spec": "颜色:黑色 | 容量:128G", "price": "299.00", "stock": "有货" } ], "params": { // 商品参数 "基础参数": [{"名称": "品牌", "值": "京东京造"}, {"名称": "尺寸", "值": "10cm"}], "详情参数": [{"名称": "材质", "值": "塑料"}] }, "images": [ // 商品图片 "https://img10.360buyimg.com/n1/jfs/t1/xxx.jpg", "https://img10.360buyimg.com/n1/jfs/t1/yyy.jpg" ], "promotion": { // 营销活动 "coupon": [{"面额": "20元", "使用条件": "满299可用"}], "activity": "双12满减活动" } } }| 错误码 | 说明 | 解决方案 |
|---|---|---|
| 100 | 签名错误 | 检查签名规则(排序、拼接、MD5 加密),确认 App Secret 无误 |
| 2001 | 权限不足 | 确认已申请 Pro 接口权限,且审核通过;检查应用类型是否匹配(企业 / 第三方) |
| 3001 | SKU ID 无效 | 核对 SKU ID 是否正确,确认商品未下架 |
| 4001 | 调用频率超限 | 降低调用频率,或申请提高限额(企业可联系京东商务拓展) |
| 500 | 接口服务异常 | 稍后重试,或联系京东开放平台技术支持 |