一、接入准备
- 注册与认证
- 登录京东开放平台,完成企业/个人账号注册及实名认证(企业需上传营业执照,个人需身份证+人脸识别)。
- 创建应用:进入"控制台-应用管理",填写应用名称、类型(如电商工具/数据分析)及描述,审核通过后获取AppKey (应用标识)和AppSecret(加密密钥)。
- 权限申请
- 在"API权限管理"中申请商品相关接口权限,如:
- 商品详情 :
jd.item.get(通过SKU ID获取商品信息) - 店铺商品列表 :
jd.union.open.shop.goods.get(分页获取店铺内所有商品) - 商品搜索 :
jd.item.search(关键词/分类搜索) - 评价数据 :
jd.union.open.comment.query(需额外申请)
- 商品详情 :
- 部分接口需京东审核(1-3个工作日),审核通过后生效。
- 在"API权限管理"中申请商品相关接口权限,如:
二、接口调用核心流程
-
构造请求参数
- 必填公共参数:
app_key(应用标识)、method(接口名称)、timestamp(时间戳,与服务器时间差≤5分钟)、v(接口版本,如2.0)、sign(签名)。 - 业务参数示例:
- 商品详情:
sku_id(商品SKU ID)、fields(返回字段,如title,price,stock) - 店铺商品列表:
seller_nick(店铺名称)、page(页码)、pageSize(每页数量)
- 商品详情:
- 必填公共参数:
-
生成签名(关键安全步骤)
- 算法:采用HMAC-SHA256 或MD5 ,步骤如下:
-
参数按ASCII码排序后拼接成字符串(排除
sign参数)。 -
首尾添加
AppSecret,形成待加密字符串。 -
使用
hashlib库进行加密(Python示例):python`import hmac import hashlib import urllib.parse def generate_sign(params, app_secret): sorted_params = sorted([(k, v) for k, v in params.items() if k != "sign"]) sign_str = "&".join(f"{k}={urllib.parse.quote_plus(str(v))}" for k, v in sorted_params) signature = hmac.new( app_secret.encode("utf-8"), sign_str.encode("utf-8"), hashlib.sha256 ).hexdigest().upper() return signature`
-
- 算法:采用HMAC-SHA256 或MD5 ,步骤如下:
-
发送请求与处理响应
-
请求方式:支持
POST/GET,推荐POST保障安全。 -
示例代码(获取店铺商品列表):
python`import requests import os app_key = os.getenv("JD_APP_KEY") app_secret = os.getenv("JD_APP_SECRET") access_token = os.getenv("JD_ACCESS_TOKEN") # 通过OAuth2.0获取 params = { "app_key": app_key, "method": "jd.union.open.shop.goods.get", "seller_nick": "特步平途专卖店", "page": 1, "pageSize": 20, "timestamp": "2025-12-10 12:00:00", "v": "2.0" } params["sign"] = generate_sign(params, app_secret) response = requests.post("https://api.jd.com/routerjson", data=params) if response.status_code == 200: data = response.json() if data.get("code") == "0": for item in data["result"]["goods_list"]: print(f"商品ID: {item['sku_id']}, 名称: {item['title']}, 价格: {item['price']}")`
-
三、关键接口说明
| 接口名称 | 功能描述 | 请求参数示例 |
|---|---|---|
jd.item.get |
获取单商品详情 | sku_id=123456, fields=title,price |
jd.union.open.shop.goods.get |
获取店铺所有商品(分页) | seller_nick=店铺名称, page=1, pageSize=50 |
jd.item.search |
商品关键词搜索 | keyword=手机, sortType=1(价格升序) |
四、注意事项
- 频率限制 :单接口每分钟≤5次,超频将返回错误码
1002,需设置重试机制(如指数退避)。 - 数据时效性:商品信息实时更新,建议缓存或定时同步。
- 安全规范 :
AppSecret需存储在服务器端,禁止硬编码;AccessToken有效期30天,需定期刷新。 - 错误处理 :常见错误码如
1001(签名错误)、1004(AppKey无效),需结合日志排查。
五、应用场景
- 商品监控:实时抓取价格、库存,构建竞品分析系统。
- 订单管理:结合订单API实现自动下单与物流跟踪。
- 营销活动:获取促销信息,嵌入自有平台提升用户转化。
通过以上步骤,可合规调用京东API获取店铺商品数据,支撑电商运营、数据分析等场景需求。建议定期关注京东开放平台文档更新,确保代码兼容性。