【技术教程】Python/Node.js 调用拼多多商品详情 API 示例详解
在电商数据对接场景中,获取拼多多商品详情是常见需求。本文将详细介绍如何通过 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 signdef 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" # 替换为实际商品IDdetail = 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 调用。如需获取更多字段(如规格、详情页内容等),可参考官方文档扩展返回数据解析部分。
