在电商数据对接场景中,获取拼多多商品详情是常见需求。本文将详细介绍如何通过 Python 和 Node.js 调用拼多多商品详情 API,包含接口说明、请求参数、返回数据解析及完整代码示例,帮助开发者快速实现对接。
一、API 接口说明
本次示例使用拼多多的「商品详情查询接口」(实际开发需以官方最新文档为准),主要功能是通过商品 ID 获取商品的标题、价格、图片、规格等详细信息。
接口基本信息
- 接口地址:
- 请求方式:
POST - 数据格式:
JSON - 认证方式:通过
client_id、sign(签名)验证身份
二、请求参数说明
调用接口需传递以下核心参数(完整参数见官方文档):
| 参数名 | 类型 | 说明 | 是否必填 |
|---|---|---|---|
type |
String | 接口类型,固定为pdd.goods.detail.get |
是 |
client_id |
String | 开发者应用 ID,在开放平台申请 | 是 |
timestamp |
Int | 时间戳(秒级) | 是 |
sign |
String | 签名,通过密钥加密生成 | 是 |
goods_id |
String | 商品 ID(拼多多商品唯一标识) | 是 |
三、签名生成规则
拼多多 API 采用签名机制验证请求合法性,签名生成步骤:
- 将所有请求参数(除
sign外)按参数名 ASCII 码升序排序 - 拼接为
key=value&key=value格式的字符串 - 在字符串末尾拼接
&client_secret=你的密钥 - 对拼接后的字符串进行 MD5 加密,得到 32 位小写签名
四、Python 调用示例
环境准备
-
安装依赖:
requests(用于网络请求)pip install requests
完整代码
import requests
import hashlib
import time
import json
# 配置信息(请替换为你的实际信息)
CLIENT_ID = "你的client_id"
CLIENT_SECRET = "你的client_secret"
API_URL = "https://api.pinduoduo.com/router/rest"
def generate_sign(params, client_secret):
"""生成签名"""
# 按参数名ASCII升序排序
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 拼接参数字符串
sign_str = "&".join([f"{k}={v}" for k, v in sorted_params]) + f"&client_secret={client_secret}"
# MD5加密并转为小写
sign = hashlib.md5(sign_str.encode()).hexdigest().lower()
return sign
def get_pdd_goods_detail(goods_id):
"""获取拼多多商品详情"""
# 构建基础参数
params = {
"type": "pdd.goods.detail.get",
"client_id": CLIENT_ID,
"timestamp": int(time.time()),
"goods_id": goods_id
}
# 生成签名
params["sign"] = generate_sign(params, CLIENT_SECRET)
try:
# 发送POST请求
response = requests.post(API_URL, data=params)
result = response.json()
# 解析返回结果
if "error_response" in result:
print(f"接口错误:{result['error_response']['error_msg']}")
return None
# 提取商品核心信息
goods_info = result["goods_detail_get_response"]["goods_detail"]
return {
"goods_id": goods_info["goods_id"],
"goods_name": goods_info["goods_name"],
"min_group_price": goods_info["min_group_price"], # 最低拼团价(分)
"max_group_price": goods_info["max_group_price"], # 最高拼团价(分)
"sales_tip": goods_info["sales_tip"], # 销量提示
"main_image_url": goods_info["main_image_url"] # 主图URL
}
except Exception as e:
print(f"请求异常:{str(e)}")
return None
# 示例调用
if __name__ == "__main__":
goods_id = "123456789" # 替换为实际商品ID
detail = get_pdd_goods_detail(goods_id)
if detail:
print("商品详情:")
print(json.dumps(detail, ensure_ascii=False, indent=2))
六、注意事项
- 权限申请:使用前需在拼多多开放平台注册账号,创建应用并申请商品详情接口的调用权限。
- 密钥安全 :
client_secret是重要凭证,需妥善保管,避免泄露。 - 频率限制:API 调用有频率限制,需合理控制请求频率,避免触发限流。
- 参数更新:拼多多 API 可能会更新参数或返回格式,开发时需参考最新官方文档。
- 错误处理:实际开发中需完善错误处理逻辑,如网络超时、参数错误等场景。
通过以上示例,开发者可以快速实现 Python/Node.js 环境下的拼多多商品详情 API 调用。如需获取更多字段(如规格、详情页内容等),可参考官方文档扩展返回数据解析部分。