全部
常见问题
产品动态
精选推荐

用 Python 独立商城接入拼多多 API 的 SDK 模板,

管理 管理 编辑 删除

好的,我帮你写一个 完整的 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 特性

  1. 自动生成签名,无需手动拼接
  2. 支持拼多多开放平台主要接口
  3. 可直接集成到独立商城后台
  4. 支持 商品同步、详情、订单查询、推广搜索
  5. 返回结果 JSON 可直接存库或前端渲染


请登录后查看

小码二开 最后编辑于2025-10-06 10:39:10

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
打赏
已打赏¥{{reward_price}}
65
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服