全部
常见问题
产品动态
精选推荐
功能建议

分析中 已回复 待规划 {{opt.name}}
分析中 已回复 待规划
京东商品详情API接口开发指南(含Java/Python实现)

管理 管理 编辑 删除

接口概述

京东开放平台为开发者提供了强大的商品详情查询接口,借助该接口,开发者仅需通过SKUID,即可轻松获取商品的全面详细信息,涵盖商品标题、精准价格、高清图片以及丰富的促销信息等。在当前电商市场竞争激烈,数据精准获取与快速响应至关重要的背景下,此接口为开发者提供了高效便捷的数据获取途径。不过,使用该接口前,开发者需要申请API权限并获取认证密钥。


接口特点

  • 批量查询支持:支持批量查询商品信息,一次最多可查询20个SKU,大大提高了数据获取效率,尤其适用于需要大量商品数据对比分析的场景。据市场调研,使用批量查询功能可使数据获取时间缩短70%。
  • 数据格式规范:返回标准的JSON格式数据,便于开发者进行解析和处理,与主流编程语言的数据处理方式高度兼容,降低了开发成本。
  • 安全验证机制:采用签名验证方式,确保数据传输的安全性和完整性,有效防止数据篡改和恶意攻击,保障了开发者和平台的利益。
  • 协议安全可靠:全面支持HTTPS协议,为数据传输提供了加密通道,在当今网络环境日益复杂的形势下,为数据安全保驾护航。

Java实现示例


import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import org.apache.commons.codec.digest.DigestUtils;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.HashMap;

import java.util.Map;

import java.util.TreeMap;


public class JdProductApi {

private static final String API_URL = "https://api.jd.com/routerjson";

private static final String VERSION = "1.0";


public static String queryProductDetail(long skuId, String appKey, String appSecret) {

try {

// 精心构造请求参数

Map<String, Object> params = new TreeMap<>();

params.put("method", "jd.union.open.goods.detail.query");

params.put("app_key", appKey);

params.put("timestamp", System.currentTimeMillis());

params.put("v", VERSION);

params.put("format", "json");


// 构建商品请求参数

JSONObject goodsReq = new JSONObject();

goodsReq.put("skuIds", new long[]{skuId});

params.put("goodsReq", goodsReq);


// 严格生成签名

String sign = generateSign(params, appSecret);

params.put("sign", sign);


// 准确发送请求

URL url = new URL(API_URL);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("POST");

conn.setDoOutput(true);

conn.getOutputStream().write(JSON.toJSONString(params).getBytes());


// 高效处理响应

BufferedReader reader = new BufferedReader(

new InputStreamReader(conn.getInputStream()));

StringBuilder response = new StringBuilder();

String line;

while ((line = reader.readLine()) != null) {

response.append(line);

}

return response.toString();

} catch (Exception e) {

e.printStackTrace();

return null;

}

}


private static String generateSign(Map<String, Object> params, String appSecret) {

StringBuilder sb = new StringBuilder(appSecret);

for (Map.Entry<String, Object> entry : params.entrySet()) {

sb.append(entry.getKey()).append(entry.getValue());

}

sb.append(appSecret);

return DigestUtils.md5Hex(sb.toString()).toUpperCase();

}

}

Python实现示例


import hashlib

import time

import json

import requests


class JdProductApi:

API_URL = "https://api.jd.com/routerjson"

VERSION = "1.0"


@staticmethod

def query_product_detail(sku_id, app_key, app_secret):

params = {

"method": "jd.union.open.goods.detail.query",

"app_key": app_key,

"timestamp": int(time.time() * 1000),

"v": JdProductApi.VERSION,

"format": "json",

"goodsReq": {"skuIds": [sku_id]}

}


# 严谨生成签名

sign = JdProductApi.generate_sign(params, app_secret)

params["sign"] = sign


# 可靠发送请求

response = requests.post(

JdProductApi.API_URL,

json=params,

headers={"Content-Type": "application/json"}

)

return response.json()


@staticmethod

def generate_sign(params, app_secret):

param_str = app_secret

for key in sorted(params.keys()):

param_str += f"{key}{params[key]}"

param_str += app_secret

return hashlib.md5(param_str.encode()).hexdigest().upper()

接口返回示例


{

"code": 0,

"message": "success",

"data": {

"skuId": 1234567,

"skuName": "示例商品名称",

"price": 299.00,

"imageList": ["http://img1.jpg", "http://img2.jpg"],

"brandName": "示例品牌",

"category": "电子产品",

"shopId": 10001,

"shopName": "官方旗舰店",

"promotionList": [

{

"promotionId": 1,

"promotionName": "满299减30",

"startTime": "2025-05-01 00:00:00",

"endTime": "2025-05-31 23:59:59"

}

]

}

}

开发注意事项

  • 权限申请先行:在使用接口前,务必先在京东开放平台申请API权限,这是使用接口的前提条件,否则无法正常调用接口获取数据。
  • 频率限制牢记:每个应用都有调用频率限制,通常为100次/秒。开发者需要合理规划调用策略,避免因频繁调用触发限制,导致数据获取中断。
  • 签名算法精准:签名算法必须严格按照文档要求实现,任何细微的偏差都可能导致签名验证失败,从而无法获取数据。
  • 协议选择恰当:建议使用HTTPS协议进行数据传输,以保证传输过程的安全性,防止数据泄露和篡改。
  • 异常处理全面:要充分考虑并处理可能出现的异常情况,如网络超时、参数错误等,确保程序的稳定性和可靠性。

以上代码提供了Java和Python两种语言的实现示例,开发者可以根据自己的技术栈选择合适的版本。实际使用时,需要将appKey和appSecret替换为实际获取的值,并添加适当的错误处理逻辑,以应对各种可能出现的异常情况。

欢迎各位大佬评论互动,小编必回

{{voteData.voteSum}} 人已参与
支持
反对
请登录后查看

1f2b05e1edf5 最后编辑于2026-06-10 18:10:32

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}} 【已收集】
{{item.floor}}# 沙发 板凳 地板 {{item.floor}}# 【已收集】
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
分享
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
收起 展开更多
查看更多
打赏
已打赏¥{{reward_price}}
29
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服
CRMEB咨询热线 400-8888-794

扫码领取产品资料

功能清单
思维导图
安装教程
CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服