以下是使用 Python 調(diào)用速賣通商品列表接口(以 AliExpress Affiliate 商品查詢 API 為例)的代碼示例,包含關(guān)鍵步驟和注釋說明:
import requests
import hashlib
import hmac
import time
from urllib.parse import urlencode
# 1. 準(zhǔn)備基礎(chǔ)參數(shù)
app_key = "YOUR_APP_KEY" # 替換為你的應(yīng)用Key
app_secret = "YOUR_APP_SECRET" # 替換為你的應(yīng)用密鑰
access_token = "YOUR_ACCESS_TOKEN" # OAuth2授權(quán)后的Token
# 公共參數(shù)
public_params = {
"app_key": app_key,
"sign_method": "sha256",
"timestamp": str(int(time.time() * 1000)), # 毫秒級時間戳
"access_token": access_token,
"v": "2.0" # API版本
}
# 業(yè)務(wù)參數(shù)(根據(jù)API文檔調(diào)整)
business_params = {
"category_ids": "", # 可選類目ID
"keywords": "phone", # 搜索關(guān)鍵詞
"page_no": 1, # 頁碼
"page_size": 10, # 每頁數(shù)量
"sort": "priceAsc", # 排序方式
"target_currency": "USD", # 目標(biāo)貨幣
"target_language": "en" # 目標(biāo)語言
}
# 2. 生成簽名
def generate_sign(params, app_secret):
# 將所有參數(shù)按key排序
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 拼接鍵值對
query_str = '&'.join([f"{k}{v}" for k, v in sorted_params])
# 使用HMAC-SHA256加密
signature = hmac.new(
app_secret.encode('utf-8'),
query_str.encode('utf-8'),
digestmod=hashlib.sha256
).hexdigest().upper()
return signature
# 合并參數(shù)
all_params = {**public_params, **business_params}
all_params["sign"] = generate_sign(all_params, app_secret)
# 3. 發(fā)送請求
api_url = "https://api-sg.aliexpress.com/sync"
response = requests.get(f"{api_url}?{urlencode(all_params)}")
# 4. 處理響應(yīng)
if response.status_code == 200:
data = response.json()
if "result" in data:
products = data["result"]["products"]
for product in products:
print(f"商品ID: {product['product_id']}")
print(f"標(biāo)題: {product['product_title']}")
print(f"價格: {product['target_sale_price']} {product['target_currency']}")
print("-------------------")
else:
print("API返回錯誤:", data.get("error_msg"))
else:
print("請求失敗,狀態(tài)碼:", response.status_code)
關(guān)鍵步驟說明:
- 參數(shù)準(zhǔn)備 公共參數(shù):包含應(yīng)用認證信息、時間戳、簽名方法等 業(yè)務(wù)參數(shù):根據(jù)官方文檔調(diào)整查詢條件 簽名密鑰:app_secret 用于生成請求簽名
- 簽名生成邏輯 參數(shù)按名稱排序后拼接 使用 HMAC-SHA256 加密生成簽名 簽名需要轉(zhuǎn)換為大寫字母
- 請求發(fā)送 使用 GET 方法發(fā)送請求 通過 URL 參數(shù)傳遞所有參數(shù) 實際端點請根據(jù)最新文檔確認
- 響應(yīng)處理 解析 JSON 數(shù)據(jù) 處理商品列表數(shù)據(jù) 錯誤處理邏輯
其他語言示例(Java/PHP) 可參考類似邏輯:
// 生成簽名示例
String signStr = params.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.map(e -> e.getKey() + e.getValue())
.collect(Collectors.joining());
String sign = HmacUtils.hmacSha256Hex(appSecret, signStr).toUpperCase();
- PHP 使用 cURL:
// 生成簽名
ksort($params);
$signStr = implode('', array_map(function($k, $v) {
return $k.$v;
}, array_keys($params), $params));
$sign = strtoupper(hash_hmac('sha256', $signStr, $app_secret));
注意事項:
- 需要先通過 OAuth2.0 流程獲取
access_token
- 商品接口可能有調(diào)用頻率限制(參考官方文檔)
- 實際參數(shù)請根據(jù)最新API文檔調(diào)整
- 生產(chǎn)環(huán)境需要添加重試機制和錯誤日志
- 敏感信息(如密鑰)應(yīng)通過環(huán)境變量存儲
四、應(yīng)用場景
商品監(jiān)控:商家可以定期調(diào)用該接口,監(jiān)控自己或競爭對手的商品信息,如價格變動、銷量情況等,以便及時調(diào)整營銷策略。
數(shù)據(jù)采集與分析:開發(fā)者可以通過該接口采集大量商品數(shù)據(jù),進行數(shù)據(jù)分析和挖掘,了解市場趨勢、消費者需求等。
商品推薦:根據(jù)用戶的搜索歷史、瀏覽記錄等信息,調(diào)用該接口獲取相關(guān)商品列表,為用戶提供個性化的商品推薦。
需要注意的是,速賣通的 API 可能會根據(jù)業(yè)務(wù)需求進行調(diào)整和更新,使用時請參考官方文檔以獲取最新的接口信息和使用方法。