vip_api_demo.py
import requests
import hashlib
import time
import json
class VipAPI:
def init(self, app_key, app_secret):
self.app_key = app_key
self.app_secret = app_secret
self.base_url = "https://api.vip.com/api.php"
def generate_sign(self, params):
"""生成签名"""
# 按参数名升序排序
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 拼接参数字符串
sign_str = self.app_secret
for key, value in sorted_params:
sign_str += f"{key}{value}"
sign_str += self.app_secret
# MD5加密
sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
return sign
def get_product_list(self, category_id, page=1, page_size=20):
"""获取商品列表"""
# 公共参数
params = {
"app_key": self.app_key,
"method": "com.vip.adp.api.open.service.goods.getGoodsList",
"timestamp": int(time.time() * 1000),
"format": "json",
"v": "2.0",
"sign_method": "md5"
}
# 业务参数
biz_content = {
"category_id": category_id,
"page": page,
"page_size": page_size
}
params["biz_content"] = json.dumps(biz_content)
# 生成签名
params["sign"] = self.generate_sign(params)
try:
response = requests.get(self.base_url, params=params)
result = response.json()
return result
except Exception as e:
print(f"请求异常: {e}")
return None
使用示例
if name == "main":
# 替换为你的实际应用密钥
APP_KEY = "your_app_key"
APP_SECRET = "your_app_secret"
vip_api = VipAPI(APP_KEY, APP_SECRET)
# 调用商品列表接口,获取女装类目商品
product_list = vip_api.get_product_list("1001", page=1, page_size=10)
if product_list:
print(json.dumps(product_list, indent=2, ensure_ascii=False))
这个示例代码展示了如何调用唯品会开放平台的 API 获取商品列表数据。主要实现了以下功能:
创建了 VipAPI 类封装 API 调用逻辑
实现了签名生成方法,符合唯品会 API 的签名规则
提供了获取商品列表的接口调用方法
包含了基本的异常处理
使用时需要替换为你在唯品会开放平台申请的实际 app_key 和 app_secret。示例中调用的是获取商品列表接口,你也可以根据需要扩展其他 API 接口的调用方法,如获取商品详情、促销活动等接口。