在京东开放平台获取商品详情的API接口操作需遵循京东官方规范,以下为分步骤的详细解答及关键注意事项:
一、前期准备
- 注册开发者账号
- 访问京东开放平台或万邦开放平台,完成企业或个人开发者注册。
- 提交资质审核(企业需营业执照,个人需身份证)。
- 创建应用并获取密钥
- 登录开发者后台,创建新应用,填写应用名称、描述等。
- 审核通过后,获取
App Key
和App Secret
,用于后续接口调用。
- 申请API权限
- 在应用管理页面,申请"商品详情查询"等相关权限。
- 等待京东审核通过(通常1-3个工作日)。
二、API接口调用流程
1. 接口文档查阅
- 官方文档地址:京东开放平台文档。
- 核心接口:
- 商品详情查询 :
jd.union.open.goods.query
(用于查询商品基本信息、佣金、价格等)。 - SKU详情查询 :
jd.union.open.goods.skuid.query
(通过SKU ID获取详细规格)。
- 商品详情查询 :
2. 请求参数准备
- 公共参数 :
app_key
:应用唯一标识。method
:接口名称(如jd.union.open.goods.query
)。timestamp
:当前时间戳(毫秒级)。sign
:签名(需按规则生成)。
- 业务参数 :
goodsReq
:JSON格式,包含商品ID(materialId
)、分类ID(cid1
/cid2
/cid3
)等。
3. 签名生成规则
-
步骤 :
- 将所有参数按字典序排序。
- 拼接为
key1=value1&key2=value2...
格式。 - 在末尾追加
app_secret
,进行MD5加密,转为大写。
-
示例 :
plaintext
|---|--------------------------------------------------------------------|
| |参数排序后:app_key=xxx&method=xxx×tamp=xxx
|
| |拼接密钥:app_key=xxx&method=xxx×tamp=xxx&app_secret=your_secret
|
| |MD5加密:生成32位大写签名
|
4. 发起请求
-
请求方式 :
POST
(推荐)或GET
。 -
请求URL :
https://router.jd.com/api
-
请求头 :
http
|---|---------------------------------------------------|
| |Content-Type: application/x-www-form-urlencoded
| -
请求体 :
plaintext
|---|--------------------------------------------------------------------------------------------------------------------|
| |app_key=xxx&method=jd.union.open.goods.query×tamp=123456789&sign=SIGNATURE&goodsReq={"materialId":"123456"}
|
5. 响应处理
-
成功响应 :
json
|---|------------------------------|
| |{
|
| |"code": "200",
|
| |"data": {
|
| |"goodsInfoList": [
|
| |{
|
| |"materialId": "123456",
|
| |"goodsName": "商品名称",
|
| |"priceInfo": {
|
| |"price": "100.00",
|
| |"discountPrice": "80.00"
|
| |},
|
| |"commissionInfo": {
|
| |"commissionShare": "10.00"
|
| |}
|
| |}
|
| |]
|
| |}
|
| |}
| -
错误响应 :
json
|---|---------------------|
| |{
|
| |"code": "1001",
|
| |"message": "签名错误"
|
| |}
|
三、关键注意事项
- 接口权限与频率限制
- 确保已申请对应接口权限,未授权调用会返回
403
错误。 - 频率限制:单应用每分钟最多调用
100
次(具体以文档为准)。
- 确保已申请对应接口权限,未授权调用会返回
- 数据时效性
- 商品价格、库存等信息可能实时变动,建议缓存数据并定期更新。
- 错误处理
- 常见错误码:
1001
:签名错误(检查签名生成逻辑)。1002
:参数缺失(核对必填参数)。1004
:App Key无效(检查密钥是否正确)。
- 常见错误码:
- 合规性要求
- 不得将API数据用于非法用途(如爬虫、竞品分析)。
- 遵守京东《开放平台服务协议》,违规可能导致封号。
四、代码示例(Python)
python
|---|----------------------------------------------------------------------------|
| | import requests
|
| | import hashlib
|
| | import time
|
| | import json
|
| | |
| | def generate_sign(params, app_secret):
|
| | sorted_params = sorted(params.items(), key=lambda x: x[0])
|
| | sign_str = "&".join([f"{k}={v}" for k, v in sorted_params]) + app_secret
|
| | return hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper()
|
| | |
| | def get_goods_detail(app_key, app_secret, material_id):
|
| | base_url = "https://router.jd.com/api"
|
| | timestamp = int(time.time() * 1000)
|
| | params = {
|
| | "app_key": app_key,
|
| | "method": "jd.union.open.goods.query",
|
| | "timestamp": timestamp,
|
| | "v": "1.0",
|
| | "goodsReq": json.dumps({"materialId": material_id})
|
| | }
|
| | params["sign"] = generate_sign(params, app_secret)
|
| | |
| | response = requests.post(base_url, data=params)
|
| | return response.json()
|
| | |
| | # 示例调用
|
| | app_key = "your_app_key"
|
| | app_secret = "your_app_secret"
|
| | material_id = "123456"
|
| | result = get_goods_detail(app_key, app_secret, material_id)
|
| | print(result)
|
五、替代方案
- 京东联盟Web服务:通过京东联盟后台直接获取商品推广链接和基础信息(无需API)。
- 第三方数据服务:如慢慢买、什么值得买等,提供商品数据接口(需付费)。
通过以上步骤,开发者可合规获取京东商品详情数据。如遇问题,可联系京东开放平台技术支持(邮箱:[email protected])。