【技术教程】Python/Node.js 调用拼多多商品详情 API 示例详解

在电商数据对接场景中,获取拼多多商品详情是常见需求。本文将详细介绍如何通过 Python 和 Node.js 调用拼多多商品详情 API,包含接口说明、请求参数、返回数据解析及完整代码示例,帮助开发者快速实现对接。

一、API 接口说明

本次示例使用拼多多的「商品详情查询接口」(实际开发需以官方最新文档为准),主要功能是通过商品 ID 获取商品的标题、价格、图片、规格等详细信息。

接口基本信息

  • 接口地址
  • 请求方式:POST
  • 数据格式:JSON
  • 认证方式:通过client_idsign(签名)验证身份

二、请求参数说明

调用接口需传递以下核心参数(完整参数见官方文档):

参数名 类型 说明 是否必填
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 小时前
乡镇外卖跑腿小程序开发实战:基于PHP的乡镇同城O2O
java·开发语言·javascript·spring cloud·uni-app·php·objective-c
0小豆02 小时前
智能字幕校准系统实战(二):6级匹配算法从精确到模糊的全链路解析
python·nlp·算法设计·spacy·ai算法·时间序列对齐
jerryinwuhan2 小时前
Python数据挖掘之回归
python·数据挖掘·回归
@木辛梓2 小时前
指针,数组,变量
开发语言·c++·算法
漠然&&2 小时前
实战案例:用 Guava ImmutableList 优化缓存查询系统,解决多线程数据篡改与内存浪费问题
java·开发语言·缓存·guava
ColderYY2 小时前
python和mongodb交互
python·mongodb
c++服务器开发2 小时前
掌握RAG系统的七个优秀GitHub存储库
人工智能·python·github·rag
AI的费曼精神3 小时前
Python装饰器入门:让你的代码更优雅
python
zhangkaixuan4563 小时前
Flink 写入 Paimon 流程:Checkpoint 与 Commit 深度剖析
java·开发语言·微服务·flink·paimon