【技术教程】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 采用签名机制验证请求合法性,签名生成步骤:

  1. 将所有请求参数(除sign外)按参数名 ASCII 码升序排序
  2. 拼接为key=value&key=value格式的字符串
  3. 在字符串末尾拼接&client_secret=你的密钥
  4. 对拼接后的字符串进行 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))

六、注意事项

  1. 权限申请:使用前需在拼多多开放平台注册账号,创建应用并申请商品详情接口的调用权限。
  2. 密钥安全 :client_secret是重要凭证,需妥善保管,避免泄露。
  3. 频率限制:API 调用有频率限制,需合理控制请求频率,避免触发限流。
  4. 参数更新:拼多多 API 可能会更新参数或返回格式,开发时需参考最新官方文档。
  5. 错误处理:实际开发中需完善错误处理逻辑,如网络超时、参数错误等场景。

通过以上示例,开发者可以快速实现 Python/Node.js 环境下的拼多多商品详情 API 调用。如需获取更多字段(如规格、详情页内容等),可参考官方文档扩展返回数据解析部分。

相关推荐
非优秀程序员2 小时前
第02章 杭电的英语老师与一台服务器|《互联网产品恩仇录》
数据库·node.js·代码规范
沐晓时光3 小时前
C语言入门,内存函数知识讲解
c语言·开发语言
Hone7 小时前
juejin-skills 系列 ②:我把「看掘金热榜」也做成了 Agent 技能
开源·node.js·ai编程
用户956256254297 小时前
跟做:Firecrawl 单页转 Markdown 再丢进沙箱总结
python·api
威哥爱编程7 小时前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos
威哥爱编程7 小时前
模拟面试智能体开发实战 01:面试挂了都不知道挂在哪?用 Python 给自己造一个随叫随到的 AI 面试官
python·agent·harmonyos
2601_967980118 小时前
Python行情API量化 02:顺序拉 20 要 2 秒?并发批量把时间压到 0.5 秒
python·api·限流·并发·量化
伞伞悦读8 小时前
【第81期】特征缩放怎么选:标准化、MinMax 与 Robust 的原理、泄漏对照和完整实验
人工智能·python·深度学习·机器学习
新*8 小时前
从一段 WebSocket 代码聊开:bytes 不是 zlib、binaryType 决定一切,15MB 大消息的零拷贝优化
javascript·python·websocket·性能优化·blob·zlib·arraybuffer
David猪大卫9 小时前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习