一、接口概述
苏宁开放平台提供了商品详情查询接口,允许开发者通过商品ID获取商品的详细信息,包括标题、价格、库存、规格参数、主图等。本文基于苏宁API文档,提供接口调用步骤及Python代码示例。
二、接口核心参数说明
- 接口地址
苏宁商品详情接口一般为:
text Copy Code api.suning.com/item/detail
(具体路径以苏宁开放平台最新文档为准)
- 请求方式
HTTP GET 或 POST(需根据苏宁文档确认)
- 必备参数 参数名 说明 示例值 app_key 开发者应用ID SN1234567890 sn_sku_id 苏宁商品唯一标识(SKU ID) 123456789012 timestamp 请求时间戳(毫秒级) 1640995200000 sign 请求签名(MD5/SHA1加密) 详见签名生成逻辑 三、签名生成逻辑(关键步骤)
苏宁API通常要求对请求参数进行加密签名,以防止篡改。以下是典型的签名流程:
参数排序:将所有请求参数按字母升序排列。 拼接字符串:格式为 key1value1key2value2...。 附加密钥:在字符串末尾追加苏宁分配的 App Secret。 生成签名:对拼接后的字符串进行MD5/SHA1加密,得到32位小写签名。 四、Python代码实现 python Copy Code import hashlib import time import requests
苏宁开发者配置
APP_KEY = "your_app_key" APP_SECRET = "your_app_secret" API_URL = "api.suning.com/routerjson"
def get_suning_item_detail(sn_sku_id): # 1. 构造基础参数 params = { "method": "suning.network.item.get", # 以实际接口方法名为准 "app_key": APP_KEY, "sn_sku_id": sn_sku_id, "timestamp": str(int(time.time() * 1000)), # 毫秒级时间戳 "format": "json", "v": "1.0" }
# 2. 生成签名
# 按参数名排序
sorted_params = sorted(params.items(), key=lambda x: x)
# 拼接键值对
sign_str = ''.join([f"{k}{v}" for k, v in sorted_params])
sign_str += APP_SECRET # 追加App Secret
# MD5加密生成签名
sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest().lower()
params['sign'] = sign
# 3. 发送HTTP请求
response = requests.get(API_URL, params=params)
result = response.json()
# 4. 处理返回数据
if result.get("sn_responseContent", {}).get("sn_error"):
print("接口调用失败:", result["sn_responseContent"]["sn_error"])
return None
else:
item_info = result["sn_responseContent"]["sn_body"]["item"]
return item_info
示例调用
if name == "main": sku_id = "123456789012" # 替换为实际商品ID data = get_suning_item_detail(sku_id) if data: print("商品标题:", data.get("title")) print("销售价:", data.get("salePrice")) print("库存:", data.get("stock"))
五、常见问题及解决
签名错误(sign_error)
检查 APP_SECRET 是否正确,参数拼接顺序是否按字母升序排列。 确认时间戳单位为毫秒。
商品不存在(item_not_exist)
验证 sn_sku_id 是否有效,可通过苏宁商家后台查询。
请求频率超限
苏宁API通常有QPS限制,建议添加请求间隔(如0.5秒/次)。 六、总结
通过调用苏宁商品详情接口,开发者可以快速集成商品数据到第三方系统中。注意遵循苏宁开放平台的签名规范和频率限制,确保服务稳定性。实际开发时请以苏宁官方文档为准。