在电商开发中,实时获取商品券后价格是提升用户体验的关键功能。京东平台通过开放API接口,允许开发者查询商品在应用优惠券后的实际价格。本文将逐步介绍如何调用京东券后价API,包括准备工作、接口调用方法、参数解析和示例代码,帮助您快速集成该功能。
一、API概述
京东券后价API属于京东宙斯开放平台的一部分,主要用于:
查询单个或多个商品的券后价格
支持动态优惠券(如满减券、折扣券)的计算
返回JSON格式数据,包含原价、券后价、优惠详情等字段
典型应用场景:
比价插件开发
购物车价格实时更新
营销活动页面展示
二、准备工作
在调用API前,需完成以下步骤:
注册开发者账号
访问京东宙斯开放平台
创建企业级应用,获取App Key和App Secret
申请API权限
在控制台申请商品价格接口权限(通常为jingdong.price.get类接口)
环境配置
确保开发环境支持HTTPS请求
安装必要库(如Python的requests库)
三、API调用说明
请求方式
HTTP方法: GET
Endpoint: https://router.jd.com/api
认证: 通过sign参数进行MD5签名(基于App Secret和请求参数生成)
核心请求参数
参数名 类型 必填 说明
method String 是 API方法名,例如 jingdong.union.open.goods.coupon.query
app_key String 是 开发者App Key
timestamp String 是 请求时间戳(格式: YYYY-MM-DD HH:MM:SS)
sku_ids String 是 商品SKU ID列表,多个用逗号分隔
coupon_ids String 否 优惠券ID(如不传,返回所有可用券后价)
v String 是 API版本(默认 2.0)
签名生成规则
签名sign的计算公式:
将所有参数按key升序排序
拼接为字符串:key1=value1&key2=value2...
追加App Secret:拼接字符串 + App Secret
计算MD5哈希值:$$ \text{sign} = \text{MD5}(\text{拼接字符串}) $$
四、响应解析
成功响应示例(JSON)
{
"code": "0",
"data": {
"results": [
{
"sku_id": "123456",
"original_price": 299.00,
"coupon_price": 249.00,
"coupons": [
{"coupon_id": "C789", "discount": 50.00}
]
}
]
}
}
关键字段说明
code: 响应状态码(0表示成功)
original_price: 商品原价
coupon_price: 券后实际价格
discount: 优惠金额
错误处理
code != 0时检查msg字段,常见错误:
1001: 参数缺失
2002: 签名验证失败
3005: 商品不存在
五、Python示例代码
以下代码演示如何调用券后价API(需替换YOUR_APP_KEY和YOUR_APP_SECRET):
import requests
import hashlib
import time
配置参数
APP_KEY = "YOUR_APP_KEY"
APP_SECRET = "YOUR_APP_SECRET"
SKU_IDS = "100001,100002" # 示例商品SKU
TIMESTAMP = time.strftime("%Y-%m-%d %H:%M:%S")
1. 构建基础参数
params = {
"method": "jingdong.union.open.goods.coupon.query",
"app_key": APP_KEY,
"timestamp": TIMESTAMP,
"sku_ids": SKU_IDS,
"v": "2.0",
"format": "json"
}
2. 生成签名
sorted_params = sorted(params.items())
query_str = "&".join([f"{k}={v}" for k, v in sorted_params])
sign_str = query_str + APP_SECRET
sign = hashlib.md5(sign_str.encode()).hexdigest()
params["sign"] = sign
3. 发送请求
url = "https://router.jd.com/api"
response = requests.get(url, params=params)
data = response.json()
4. 处理响应
if data.get("code") == "0":
for item in data["data"]["results"]:
print(f"商品SKU: {item['sku_id']}, 券后价: ¥{item['coupon_price']}")
else:
print(f"API调用失败: {data.get('msg')}")
六、注意事项
频率限制
免费版API限制 100次/分钟,超出需购买配额
数据实时性
券后价基于京东实时库存和优惠规则,结果可能因促销变动
安全建议
在服务端调用API,避免App Secret前端暴露
使用HTTPS加密传输
调试工具
利用京东开放平台的在线调试器验证参数
通过本指南,您可快速集成京东券后价功能。如有任何疑问,欢迎大家留言探讨。