自动生成签名的接口模板 —— 即给定 AppKey
和 AppSecret
,自动构造好签名参数、拼装请求、发送 API 请求的标准化封装。
企业级可直接使用的 Python SDK 模板,
它能自动完成签名、拼接参数、发请求和返回结果。
你只要改两个值:APP_KEY
和 APP_SECRET
。
一、模板说明
功能:
- 自动计算淘宝 TOP API 签名;
- 支持所有淘宝开放平台接口;
- 通用调用方法(不局限于商品详情);
- 自动 JSON 格式化结果;
- 兼容 Python 3.8+。
二、完整代码(taobao_sdk.py)
import hashlib
import time
import requests
import json
class TaobaoSDK:
"""
淘宝开放平台通用SDK封装
支持所有API自动签名调用
"""
def __init__(self, app_key: str, app_secret: str, session: str = None):
"""
初始化SDK
:param app_key: 淘宝开放平台 AppKey
:param app_secret: 淘宝开放平台 AppSecret
:param session: 授权用户会话key(有的API需要)
"""
self.app_key = app_key
self.app_secret = app_secret
self.session = session
self.gateway_url = "https://eco.taobao.com/router/rest"
def _sign(self, params: dict) -> str:
"""
生成 TOP API 签名(MD5)
"""
sorted_params = sorted(params.items())
query_str = self.app_secret + ''.join(f"{k}{v}" for k, v in sorted_params) + self.app_secret
return hashlib.md5(query_str.encode('utf-8')).hexdigest().upper()
def call_api(self, method: str, **kwargs):
"""
调用任意淘宝API接口
:param method: API方法名(如 'taobao.tbk.item.info.get')
:param kwargs: 业务参数(如 num_iids='123456')
"""
params = {
"method": method,
"app_key": self.app_key,
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
"format": "json",
"v": "2.0",
"sign_method": "md5",
}
# 添加业务参数
params.update(kwargs)
# 有session的接口自动加上
if self.session:
params["session"] = self.session
# 签名
params["sign"] = self._sign(params)
# 发送请求
resp = requests.get(self.gateway_url, params=params, timeout=10)
try:
return resp.json()
except json.JSONDecodeError:
return {"error": "Invalid JSON response", "text": resp.text}
# ==========================
# ✅ 示例用法
# ==========================
if __name__ == "__main__":
APP_KEY = "你的AppKey"
APP_SECRET = "你的AppSecret"
# 初始化SDK
tao = TaobaoSDK(APP_KEY, APP_SECRET)
# 示例1:获取商品详情
result = tao.call_api(
method="taobao.tbk.item.info.get",
num_iids="1234567890123"
)
print("商品详情:")
print(json.dumps(result, indent=2, ensure_ascii=False))
# 示例2:商品搜索
search_result = tao.call_api(
method="taobao.tbk.item.get",
q="蓝牙耳机",
page_no=1,
page_size=5
)
print("\n商品搜索结果:")
print(json.dumps(search_result, indent=2, ensure_ascii=False))
⚙️ 三、模板特性
功能 | 说明 |
---|---|
✅ 自动签名 | 内置淘宝 TOP 签名算法(MD5 + Secret) |
✅ 通用接口 | 所有淘宝 API 方法都能用 |
✅ 自动加时间戳 | 无需手动计算 |
✅ 自动格式化输出 | JSON 格式直接可打印 |
✅ 支持带 session 授权 | 兼容需授权的接口(如店铺接口) |
四、调用方式举例
from taobao_sdk import TaobaoSDK
tao = TaobaoSDK(app_key="xxxx", app_secret="xxxx")
# 获取商品详情
info = tao.call_api("taobao.tbk.item.info.get", num_iids="1234567890123")
print(info)
# 搜索商品
search = tao.call_api("taobao.tbk.item.get", q="华为手机", page_no=1)
print(search)
五、提示与进阶用法
场景 | 参数/接口 |
---|---|
获取优惠券 | taobao.tbk.coupon.get |
生成淘口令 | taobao.tbk.tpwd.create |
获取店铺详情 | taobao.tbk.shop.get |
联盟高佣转链 | taobao.tbk.privilege.get (需联盟授权) |
支持授权 session | 在 TaobaoSDK(session="token") 时启用 |
是否希望我帮你把上面这个 SDK 进一步打包成一个可 pip install
的项目结构?
(比如 taobao_sdk/
包、setup.py
、__init__.py
、examples/
等,方便直接集成进系统)