京东开放平台获取京东商品详情API接口操作解答

在京东开放平台获取商品详情的API接口操作需遵循京东官方规范,以下为分步骤的详细解答及关键注意事项:


一、前期准备

  1. 注册开发者账号
    • 访问京东开放平台或万邦开放平台,完成企业或个人开发者注册。
    • 提交资质审核(企业需营业执照,个人需身份证)。
  2. 创建应用并获取密钥
    • 登录开发者后台,创建新应用,填写应用名称、描述等。
    • 审核通过后,获取App KeyApp Secret,用于后续接口调用。
  3. 申请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. 签名生成规则
  • 步骤

    1. 将所有参数按字典序排序。
    2. 拼接为key1=value1&key2=value2...格式。
    3. 在末尾追加app_secret,进行MD5加密,转为大写。
  • 示例

    复制代码

    plaintext

    |---|--------------------------------------------------------------------|
    | | 参数排序后:app_key=xxx&method=xxx&timestamp=xxx |
    | | 拼接密钥:app_key=xxx&method=xxx&timestamp=xxx&app_secret=your_secret |
    | | MD5加密:生成32位大写签名 |

4. 发起请求
  • 请求方式POST(推荐)或GET

  • 请求URLhttps://router.jd.com/api

  • 请求头

    复制代码

    http

    |---|---------------------------------------------------|
    | | Content-Type: application/x-www-form-urlencoded |

  • 请求体

    复制代码

    plaintext

    |---|--------------------------------------------------------------------------------------------------------------------|
    | | app_key=xxx&method=jd.union.open.goods.query&timestamp=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": "签名错误" |
    | | } |


三、关键注意事项

  1. 接口权限与频率限制
    • 确保已申请对应接口权限,未授权调用会返回403错误。
    • 频率限制:单应用每分钟最多调用100次(具体以文档为准)。
  2. 数据时效性
    • 商品价格、库存等信息可能实时变动,建议缓存数据并定期更新。
  3. 错误处理
    • 常见错误码:
      • 1001:签名错误(检查签名生成逻辑)。
      • 1002:参数缺失(核对必填参数)。
      • 1004:App Key无效(检查密钥是否正确)。
  4. 合规性要求
    • 不得将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])。

相关推荐
Python开发吖15 分钟前
【已解决】python的kafka-python包连接kafka报认证失败
开发语言·python·kafka
aini_lovee3 小时前
python在容器内克隆拉取git私有仓库
git·python·elasticsearch
小满zs3 小时前
Zustand 第五章(订阅)
前端·react.js
涵信4 小时前
第一节 基础核心概念-TypeScript与JavaScript的核心区别
前端·javascript·typescript
谢尔登4 小时前
【React】常用的状态管理库比对
前端·spring·react.js
编程乐学(Arfan开发工程师)4 小时前
56、原生组件注入-原生注解与Spring方式注入
java·前端·后端·spring·tensorflow·bug·lua
小公主5 小时前
JavaScript 柯里化完全指南:闭包 + 手写 curry,一步步拆解原理
前端·javascript
安全系统学习5 小时前
网络安全之RCE简单分析
开发语言·python·算法·安全·web安全
周某某~5 小时前
七.适配器模式
java·设计模式·适配器模式
姑苏洛言6 小时前
如何解决答题小程序大小超过2M的问题
前端