自動(dòng)生成簽名的接口模板 —— 即給定 AppKey
和 AppSecret
,自動(dòng)構(gòu)造好簽名參數(shù)、拼裝請(qǐng)求、發(fā)送 API 請(qǐng)求的標(biāo)準(zhǔn)化封裝。
企業(yè)級(jí)可直接使用的 Python SDK 模板,
它能自動(dòng)完成簽名、拼接參數(shù)、發(fā)請(qǐng)求和返回結(jié)果。
你只要改兩個(gè)值:APP_KEY
和 APP_SECRET
。
一、模板說(shuō)明
功能:
- 自動(dòng)計(jì)算淘寶 TOP API 簽名;
- 支持所有淘寶開(kāi)放平臺(tái)接口;
- 通用調(diào)用方法(不局限于商品詳情);
- 自動(dòng) JSON 格式化結(jié)果;
- 兼容 Python 3.8+。
二、完整代碼(taobao_sdk.py)
import hashlib
import time
import requests
import json
class TaobaoSDK:
"""
淘寶開(kāi)放平臺(tái)通用SDK封裝
支持所有API自動(dòng)簽名調(diào)用
"""
def __init__(self, app_key: str, app_secret: str, session: str = None):
"""
初始化SDK
:param app_key: 淘寶開(kāi)放平臺(tái) AppKey
:param app_secret: 淘寶開(kāi)放平臺(tái) AppSecret
:param session: 授權(quán)用戶(hù)會(huì)話(huà)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):
"""
調(diào)用任意淘寶API接口
:param method: API方法名(如 'taobao.tbk.item.info.get')
:param kwargs: 業(yè)務(wù)參數(shù)(如 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",
}
# 添加業(yè)務(wù)參數(shù)
params.update(kwargs)
# 有session的接口自動(dòng)加上
if self.session:
params["session"] = self.session
# 簽名
params["sign"] = self._sign(params)
# 發(fā)送請(qǐng)求
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="藍(lán)牙耳機(jī)",
page_no=1,
page_size=5
)
print("\n商品搜索結(jié)果:")
print(json.dumps(search_result, indent=2, ensure_ascii=False))
?? 三、模板特性
功能 | 說(shuō)明 |
---|---|
? 自動(dòng)簽名 | 內(nèi)置淘寶 TOP 簽名算法(MD5 + Secret) |
? 通用接口 | 所有淘寶 API 方法都能用 |
? 自動(dòng)加時(shí)間戳 | 無(wú)需手動(dòng)計(jì)算 |
? 自動(dòng)格式化輸出 | JSON 格式直接可打印 |
? 支持帶 session 授權(quán) | 兼容需授權(quán)的接口(如店鋪接口) |
四、調(diào)用方式舉例
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="華為手機(jī)", page_no=1)
print(search)
五、提示與進(jìn)階用法
場(chǎng)景 | 參數(shù)/接口 |
---|---|
獲取優(yōu)惠券 | taobao.tbk.coupon.get |
生成淘口令 | taobao.tbk.tpwd.create |
獲取店鋪詳情 | taobao.tbk.shop.get |
聯(lián)盟高傭轉(zhuǎn)鏈 | taobao.tbk.privilege.get (需聯(lián)盟授權(quán)) |
支持授權(quán) session | 在 TaobaoSDK(session="token") 時(shí)啟用 |
是否希望我?guī)湍惆焉厦孢@個(gè) SDK 進(jìn)一步打包成一個(gè)可 pip install
的項(xiàng)目結(jié)構(gòu)?
(比如 taobao_sdk/
包、setup.py
、__init__.py
、examples/
等,方便直接集成進(jìn)系統(tǒng))