好的,我帮你写一个 完整的 Python SDK 模板,可以直接用在你的独立商城后台,支持拼多多商品同步、商品详情、订单查询和推广链接获取。
这个 SDK 封装了签名、请求、返回解析等常用功能,方便直接调用。
拼多多 Python SDK 模板
import hashlib
import time
import requests
import json
class PinduoduoSDK:
"""
拼多多开放平台 Python SDK
功能:
- 商品搜索
- 商品详情
- 订单查询
- 推广链接获取(多多客 API)
"""
def __init__(self, client_id: str, client_secret: str, access_token: str = None):
"""
初始化 SDK
:param client_id: 拼多多应用 Client ID
:param client_secret: 拼多多应用 Client Secret
:param access_token: 已授权用户 Access Token(部分接口需要)
"""
self.client_id = client_id
self.client_secret = client_secret
self.access_token = access_token
self.gateway_url = "https://gw-api.pinduoduo.com/api/router"
def _sign(self, params: dict) -> str:
"""
拼多多接口签名
规则:
1. 参数按字母升序排序
2. 拼接 key=value 字符串
3. 前后加 client_secret
4. MD5 后大写
"""
sorted_items = sorted(params.items())
query = self.client_secret + ''.join(f"{k}{v}" for k, v in sorted_items) + self.client_secret
return hashlib.md5(query.encode('utf-8')).hexdigest().upper()
def _post(self, data: dict):
"""
发送 POST 请求
"""
data["client_id"] = self.client_id
data["timestamp"] = str(int(time.time()))
data["data_type"] = "JSON"
if self.access_token:
data["access_token"] = self.access_token
# 生成签名
data["sign"] = self._sign(data)
# 发送请求
resp = requests.post(self.gateway_url, data=data, timeout=10)
try:
return resp.json()
except json.JSONDecodeError:
return {"error": "Invalid JSON response", "text": resp.text}
# =======================
# 商品搜索
# =======================
def search_goods(self, keyword: str, page: int = 1, page_size: int = 20):
"""
搜索商品
:param keyword: 搜索关键词
:param page: 页码
:param page_size: 每页数量
"""
data = {
"type": "pdd.goods.search",
"page": page,
"page_size": page_size,
"keyword": keyword
}
return self._post(data)
# =======================
# 商品详情
# =======================
def goods_detail(self, goods_id: int):
"""
获取商品详情
:param goods_id: 拼多多商品ID
"""
data = {
"type": "pdd.goods.detail",
"goods_id_list": json.dumps([goods_id])
}
return self._post(data)
# =======================
# 订单查询
# =======================
def order_list(self, start_update_time: int, end_update_time: int, page: int = 1, page_size: int = 20):
"""
查询订单
:param start_update_time: 开始更新时间(时间戳)
:param end_update_time: 结束更新时间(时间戳)
"""
data = {
"type": "pdd.order.list.get",
"page": page,
"page_size": page_size,
"start_update_time": start_update_time,
"end_update_time": end_update_time
}
return self._post(data)
# =======================
# 多多客商品搜索
# =======================
def ddk_goods_search(self, keyword: str, page: int = 1, page_size: int = 20):
"""
多多客商品搜索(推广接口)
:param keyword: 搜索关键词
"""
data = {
"type": "pdd.ddk.goods.search",
"keyword": keyword,
"page": page,
"page_size": page_size
}
return self._post(data)
# =======================
# 示例用法
# =======================
if __name__ == "__main__":
CLIENT_ID = "你的ClientID"
CLIENT_SECRET = "你的ClientSecret"
ACCESS_TOKEN = "可选用户授权token"
sdk = PinduoduoSDK(CLIENT_ID, CLIENT_SECRET, ACCESS_TOKEN)
# 商品搜索
search_result = sdk.search_goods(keyword="蓝牙耳机", page=1, page_size=5)
print("搜索结果:")
print(json.dumps(search_result, indent=2, ensure_ascii=False))
# 商品详情
if "goods_list" in search_result.get("goods_search_response", {}):
goods_id = search_result["goods_search_response"]["goods_list"][0]["goods_id"]
detail = sdk.goods_detail(goods_id=goods_id)
print("\n商品详情:")
print(json.dumps(detail, indent=2, ensure_ascii=False))
# 多多客搜索
ddk_result = sdk.ddk_goods_search(keyword="蓝牙耳机")
print("\n多多客商品搜索:")
print(json.dumps(ddk_result, indent=2, ensure_ascii=False))
✅ SDK 特性
- 自动生成签名,无需手动拼接
- 支持拼多多开放平台主要接口
- 可直接集成到独立商城后台
- 支持 商品同步、详情、订单查询、推广搜索
- 返回结果 JSON 可直接存库或前端渲染