拼多多开放平台 · API 参考与接入状态

数字展览馆 3qyyds.com · 开放接口文档(含本站直连网关实测结论)
← 返回展览馆首页 · 开发者参考 · 实测日期 2026-09-22

📌 接口概述 pdd.erp.order.sync

pdd.erp.order.sync 用于把 ERP 系统中的订单物流 / 运单信息回传到拼多多打单系统, 以实现自动打印快递单、发票及订单状态跟踪。这是一个商家后台写接口(数据往外推), 不返回商品列表,无法用于「商品推荐 / 猜你喜欢」场景。

💡 因此本站首页「猜你喜欢的」区块的拼多多橱窗并未使用本接口,而是走 多多客商品接口(pdd.ddk.* 系列),由服务端代理 /api/pdd/guess 调用,密钥保存在服务器 .pdd_config.json,绝不暴露到前端。 当前该通道尚未放行,详见下方「实测结论」与「当前阻塞点」。

🧪 接口可用性实测结论 2026-09-22 · 直连网关验证

以下结果由本站服务端持 client_id + client_secret 直连 gw-api.pinduoduo.com 实测取得(非文档推测)。判读要点:21002 表示 已过鉴权(只缺参数);20031 表示接口存在但无权限包; 50001 非多多客 表示需绑定多多进宝 duoId;10017 表示接口名不存在。

接口实测结果含义
pdd.time.get✅ 成功密钥有效、MD5 大写签名正确
pdd.goods.cats.get✅ 成功真实返回商品类目(如"男装"cat_id 239)
pdd.goods.opt.get✅ 成功真实返回属性字典(如"食品"opt_id 1)
pdd.mall.info.get · pdd.order.list.get · pdd.goods.list.get
pdd.goods.detail.get · pdd.goods.spec.id.get · pdd.logistics.companies.get
pdd.erp.order.sync · pdd.refund.list.increment.get
20031 无权限接口族存在且类型兼容,但应用未开通任何权限包(pdd.erp.order.sync 亦在此列)
pdd.ddk.goods.search · pdd.ddk.goods.recommend.get · pdd.ddk.goods.detail
pdd.ddk.goods.pid.query · pdd.ddk.mall.goods.list.get
pdd.ddk.goods.basic.info.get · pdd.ddk.rp.prom.url.generate · pdd.ddk.theme.goods.search · pdd.ddk.order.detail.get
50001 非多多客参数补全后统一报错:client_id 未绑定任何 duoId,全部多多客接口不可用
pdd.ddk.goods.zs.unit.url.gen21002 → 50001不带 pid 时仅缺参数(过鉴权);带上 pid 即触发归属校验并报 50001
pdd.goods.search · pdd.ddk.tools.prom.url.generate · pdd.ddk.goods.prom.url.generate
pdd.ddk.goods.top.goods.list.query · pdd.ddk.merchant.basic.info.query
10017 不存在网关无此接口名(网上不少示例有误)
pdd.pop.auth.token.create需 OAuth code授权码模式,需商家人工授权,无法用密钥直接换 access_token
⚠️ 两个必须注意的坑(已在本站代码中修正)
① 签名 sign 必须为 MD5 的大写十六进制。小写会被网关判为 20004 签名验证失败(实测确认)。
② pdd.goods.search 这个接口并不存在,商品搜索请用 pdd.ddk.goods.search(且需先绑定 duoId)。

🚧 当前阻塞点 · 多多进宝提示「clientID不存在,无法绑定」 2026-09-22 实测

在 jinbao.pinduoduo.com/third-party/rank(多多客 API 工具 → 绑定 Client ID)输入本站 client_id 时,页面顶部提示 「clientID不存在,无法绑定」。 结合网关实测(密钥有效、三个基础接口成功、ddk 族全部 50001、商家族全部 20031), 可判定:问题不在密钥与签名,而在应用资质与账号归属——网关承认这个应用,但多多进宝不认它。

按概率依次排查

#检查项为什么是它
1开放平台账号的手机号 是否 等于 多多进宝账号手机号官方文档与接入教程均要求「开放平台与多多进宝必须是同一账号 / 同一手机号」。用 A 账号的 client_id 去 B 账号的多多进宝绑定,就会查不到该 client_id
2应用是否审核通过 / 已上线多多进宝绑定页步骤一明示「提交应用审核」,步骤二为「应用审核通过后输入 Client ID 进行绑定」——开发中 / 审核中的应用不在可绑定范围,绑定页便会报"不存在"
3应用类型是否为 多多客 / 工具商 类实测本应用 ddk 族全报 50001「非多多客」+ 商家族全报 20031,特征符合「商家应用且未开通权限包」
4client_id 逐字符核对(32 位小写 hex)复制粘贴易带空格 / 换行 / 混入 client_secret
⚠️ 多多进宝 不支持解绑 client_id(官方 FAQ 明确)。请务必先确认第 1、2 项,再把正确的 client_id 绑到 duoId 上;一旦绑错只能换账号。另外 client_secret 一旦在聊天 / 截图中出现过,建议在开放平台重置后再使用。

🚀 启用商品橱窗的三条路径

路径 A · 多多客(推荐,免费、无需用户授权)

路径 B · 商家自营商品(需权限包 + OAuth 授权)

路径 C · 零依赖(当前已上线)

当前线上已完成 client_id / client_secret 注入且密钥自检通过, 只差「账号资质 / 权限」这一步;在打通之前,首页按下发区 C 的降级方案呈现。

🌐 请求地址

环境HTTPHTTPS(推荐)
正式环境http://gw-api.pinduoduo.com/api/routerhttps://gw-api.pinduoduo.com/api/router

注:拼多多开放平台目前无沙箱环境,仅提供正式环境。

🔧 公共参数(每次调用必带)

参数类型必填说明
typeString必填API 接口名,如 pdd.erp.order.sync、pdd.ddk.goods.search
client_idString必填开放平台分配给应用的 client_id
access_tokenString选填通过 OAuth2(pdd.pop.auth.token.create)获取的授权令牌;涉及用户 / 店铺数据时必须传
timestampString必填UNIX 时间戳(秒),与拼多多服务器时间差需在 10 分钟内
signString必填API 参数签名结果,MD5 算法,必须大写,见下方「签名算法」
data_typeString选填返回格式,JSON 或 XML,默认 JSON(大写)
versionString选填API 协议版本,默认 V1

📦 业务参数 pdd.erp.order.sync

参数类型必填说明
logistics_idLong必填物流公司编码
order_snString必填订单号
order_stateInteger必填订单状态:1 = 已打单
waybill_noString必填运单号
该接口需先开通「订单 / 打单」类权限包;本站应用实测为 20031(无权限),暂不可调用。

🔏 签名算法(MD5 · 大写)

步骤

Node.js 示例

// 服务端代理示例(与本站 /api/pdd/guess 同款逻辑)
const crypto = require('crypto');
function pddSign(params, secret) {
  const keys = Object.keys(params)
    .filter(k => params[k] !== '' && k !== 'sign')
    .sort();
  let s = secret;
  for (const k of keys) s += k + params[k];
  s += secret;
  return crypto.createHash('md5').update(s).digest('hex').toUpperCase(); // 必须大写
}

Python 示例

import hashlib
def pdd_sign(params, secret):
    items = sorted((k, v) for k, v in params.items()
                   if k != 'sign' and v != '')
    raw = secret + ''.join(f'{k}{v}' for k, v in items) + secret
    return hashlib.md5(raw.encode('utf-8')).hexdigest().upper()   # 必须大写

🧾 常见错误码速查

错误码含义处理
10017type 不正确(接口名不存在)核对接口名,勿用网上流传的 pdd.goods.search
20031应用没有此接口的调用权限接口族兼容,仅缺权限包:在开放平台申请对应权限包
20004签名验证失败确认为 MD5 大写;核对 client_secret 与参数升序
50001非多多客(未绑定 duoId / 非归属 clientId)先排查「开放平台与多多进宝是否同一手机号 + 应用是否审核通过」,再在 jinbao.pinduoduo.com/third-party/rank 绑定 client_id
21002请求参数不能为空按提示补必填参数(如 pid);出现此码说明已过鉴权
10001公共参数错误:access_token该接口需要授权令牌,先完成 OAuth

📨 返回结构(示例)

{
  "error_response": {            // 仅出错时存在
    "error_code": 50001,
    "error_msg": "非多多客,请到 ... 检查:1. duoId是否绑定clientId ...",
    "request_id": "179..."
  },
  "goods_search_response": {     // 成功时为具体业务的 _response 节点
    "goods_list": [ { "goods_id", "goods_name", "min_group_price", "goods_thumbnail_url", "sales_tip", "goods_sign" } ]
  }
}

调用示例(简化)

const params = {
  type: 'pdd.erp.order.sync',
  client_id, timestamp: String(Math.floor(Date.now()/1000)),
  data_type: 'JSON',
  logistics_id: '1001', order_sn: '2609...',
  order_state: '1', waybill_no: 'YT1234567890'
};
params.sign = pddSign(params, client_secret);   // MD5 大写
// POST application/x-www-form-urlencoded 到网关地址

🔗 本站接入状态

← 返回展览馆首页