电子说
在电商系统开发、价格监控、竞品分析等场景中,获取商品的原始详情数据是基础且关键的一环。京东作为国内领先的电商平台,提供了相应的API接口供开发者调用。本文将介绍如何使用京东开放平台的API接口获取商品详情原数据。
一、 接口基本说明
接口地址: 通常为 https://api.jd.com/routerjson (具体路径请以京东开放平台最新文档为准)
HTTP方法: GET 或 POST
认证方式: 需要调用方在京东开放平台注册成为开发者,创建应用并获得 app_key 和 app_secret。调用时需进行签名认证,通常采用 OAuth 2.0 或京东自定义的签名算法(如 JOS 签名)。
数据格式: 请求和响应数据通常采用 JSON 格式。
二、 核心请求参数
调用商品详情接口,以下参数是必需的:
method: 指定要调用的API方法名。例如,获取商品详情的方法可能类似于 jingdong.ware.read.findWareById 或 biz.product.getdetail (请务必查阅官方文档确认最新方法名)。
access_token: 用户授权后获得的访问令牌(对于需要用户授权的场景)。对于部分基础商品信息查询,可能只需应用级授权。
app_key: 开发者在京东开放平台创建应用后获得的 App Key。
timestamp: 请求发起的时间戳,格式通常为 yyyy-MM-dd HH:mm:ss。
v: API版本号,如 2.0。
sign: 根据请求参数、app_secret 和特定签名规则生成的签名值,用于验证请求的合法性。签名算法需严格遵循京东开放平台文档。
业务参数: 具体到商品详情查询,最核心的业务参数是商品的唯一标识:
sku_id: 京东商品的SKU ID (库存量单位编号),是标识具体商品的最常用ID。例如 123456789。
或者 ware_id: 在某些接口中可能使用商品ID (Ware ID)。
三、 返回数据结构(示例)
一个成功的API调用响应将包含商品详情的详细信息。数据结构庞大且可能因接口版本和商品类目不同而有差异,但通常会包含以下核心字段:
{
"code": "0", // 响应码,0表示成功
"message": "success", // 响应消息
"result": {
"skuId": 123456789, // 商品SKU ID
"wareId": 987654321, // 商品ID (可能同skuId或不同)
"name": "【京东自营】XX品牌 高性能智能手机 8GB+256GB 曜石黑", // 商品名称
"brandName": "XX品牌", // 品牌名称
"productArea": "中国", // 产地
"upc": "6921234567890", // UPC编码
"saleUnit": "台", // 销售单位
"weight": "0.2", // 重量 (kg)
"packListing": "手机 x1, 充电器 x1, 数据线 x1, 说明书 x1", // 包装清单
"wreadMe": "请阅读说明书...", // 使用说明/注意事项
"imagePath": "https://imgX.jd.com/xxxx.jpg", // 主图URL
"imageList": [ // 商品图列表
"https://imgX.jd.com/xxxx_1.jpg",
"https://imgX.jd.com/xxxx_2.jpg"
],
"priceInfo": {
"price": 3999.00, // 京东价
"jdPrice": 3999.00, // 同京东价
"marketPrice": 4299.00, // 市场价/原价
// 可能还有plus价格等
},
"categoryId": 9987, // 类目ID
"categoryPath": "手机通讯 >手机 >智能手机", // 类目路径
"shopInfo": {
"shopId": 1000000123, // 店铺ID
"shopName": "XX品牌京东自营旗舰店", // 店铺名称
"score": "4.9", // 店铺评分
"logisticsScore": "4.8" // 物流评分
},
"baseBigFieldInfo": {
// 商品基础属性集合 (键值对形式)
"商品毛重": "0.22kg",
"商品产地": "中国大陆",
"CPU型号": "骁龙8 Gen2",
"运行内存": "8GB",
"机身存储": "256GB",
// ... 更多属性
},
"introductionHtml": "< html >...< /html >", // 商品详情介绍 (HTML格式)
"introductionMobiles": "< html >...< /html >", // 移动端商品详情 (HTML格式)
"wareQD": "商品特色描述..." // 商品亮点
}
}

四、 调用流程与注意事项
注册开发者账号: 访问京东开放平台,完成开发者注册。
创建应用: 在控制台创建应用,获取 app_key 和 app_secret。
阅读文档: 仔细查阅目标商品详情API的 最新 官方文档,确认准确的 method 名称、必需参数、可选参数、请求方式、签名算法。
构造请求:
设置 method, app_key, timestamp, v 等固定参数。
设置业务参数 sku_id 或 ware_id。
根据官方签名算法(如 JOS 签名),使用 app_secret 和所有请求参数(按规则排序后)生成 sign。
将参数组装成 Query String (GET) 或 Form Data/JSON Body (POST)。
发送请求: 使用 HTTP Client (如 HttpURLConnection, OkHttp, Requests 等) 发送请求。
处理响应:
检查 code 是否为 0 (成功)。
解析 result 对象,获取所需商品数据。
处理可能的错误码(如签名错误 1001、参数错误 1002、无权限 1003、频率限制 1004 等)。
注意事项:
权限与授权: 确保你的应用有调用该API的权限。部分敏感数据可能需要商家或用户授权 (access_token)。
频率限制: 京东API有严格的调用频率限制,需遵守平台规则,避免因频繁调用被封禁。
数据时效性: API返回的数据是调用时刻的快照,商品价格、库存等信息可能实时变化。
数据使用合规: 获取的数据需遵守京东开放平台的数据使用协议,不得用于非法用途。
HTTPS: 所有请求均应通过 HTTPS 协议发送。
签名安全: app_secret 是核心机密,务必妥善保管,切勿泄露。
五、 简单调用示例 (Python伪代码)
import requests
import hashlib
import time
import urllib.parse
app_key = 'YOUR_APP_KEY'
app_secret = 'YOUR_APP_SECRET' # 注意保密!
method = 'jingdong.ware.read.findWareById' # 假设的方法名
sku_id = '123456789'
timestamp = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
v = '2.0'
# 1. 准备参数 (除 sign 外)
params = {
'method': method,
'app_key': app_key,
'timestamp': timestamp,
'v': v,
'sku_id': sku_id
}
# 2. 按规则排序参数 (如字母序)
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 3. 拼接字符串 (例如: app_key=xxx&method=yyy&...&sku_id=zzz + app_secret)
sign_str = app_secret
for k, v in sorted_params:
sign_str += k + v
sign_str += app_secret
# 4. 计算 MD5 (或 SHA, 以文档为准)
sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
# 5. 添加 sign 到参数
params['sign'] = sign
# 6. 发送请求 (GET 示例)
response = requests.get('https://api.jd.com/routerjson', params=params)
# 7. 处理响应
if response.status_code == 200:
data = response.json()
if data['code'] == '0':
product_info = data['result']
print(f"商品名称: {product_info['name']}")
print(f"京东价: ¥{product_info['priceInfo']['price']}")
# ... 处理其他数据
else:
print(f"API错误! code: {data['code']}, message: {data['message']}")
else:
print(f"HTTP请求失败! 状态码: {response.status_code}")

六、 总结
京东平台提供的商品详情API接口是获取商品原始数据的有效途径。开发者在使用前需仔细阅读官方文档,严格遵守调用规范、签名算法和频率限制,并确保数据使用的合法性。通过合理利用此API,可以高效地构建电商数据服务、分析系统等应用。如有任何疑问,欢迎大家留言探讨。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !