京东平台获取商品详情原数据API接口技术解析

电子说

1.4w人已加入

描述

 在电商系统开发、价格监控、竞品分析等场景中,获取商品的原始详情数据是基础且关键的一环。京东作为国内领先的电商平台,提供了相应的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": "商品特色描述..." // 商品亮点
  }
}
API

 

四、 调用流程与注意事项

注册开发者账号: 访问京东开放平台,完成开发者注册。

创建应用: 在控制台创建应用,获取 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接口是获取商品原始数据的有效途径。开发者在使用前需仔细阅读官方文档,严格遵守调用规范、签名算法和频率限制,并确保数据使用的合法性。通过合理利用此API,可以高效地构建电商数据服务、分析系统等应用。如有任何疑问,欢迎大家留言探讨。

​审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分