使用拼多多开放平台API根据商品ID获取商品详情

4 阅读4分钟

引言

在电商系统开发或数据分析场景中,经常需要获取指定商品的详细信息。拼多多开放平台提供了丰富的API接口,其中获取商品详情是一个基础且重要的功能。本文将介绍如何使用拼多多开放平台的API,通过商品ID获取商品的完整详情数据。

核心流程

获取商品详情的主要步骤如下:

  1. 认证与授权:获取有效的访问令牌 (access_token)。
  2. 构建请求:使用商品ID和其他必要参数构造API请求。
  3. 发送请求:向拼多多API服务器发送HTTP请求。
  4. 解析响应:处理返回的JSON数据,提取所需信息。

关键API

拼多多开放平台中用于获取商品详情的核心API是: pdd.ddk.goods.detail (商品详情查询接口)

代码示例 (Python)

以下是一个使用Python语言调用该API的示例代码框架:

import requests
import hashlib
import time
import json

# 1. 准备基础信息 (需替换为你的实际信息)
client_id = "YOUR_CLIENT_ID"  # 开放平台应用ID
client_secret = "YOUR_CLIENT_SECRET"  # 开放平台应用密钥
access_token = "YOUR_ACCESS_TOKEN"  # 通过OAuth2.0获取的有效令牌
goods_id = "1234567890"  # 目标商品ID

# 2. 设置API地址
api_url = "https://open-api.pinduoduo.com/api/router"

# 3. 构造请求参数
timestamp = str(int(time.time()))  # 当前时间戳
params = {
    "type": "pdd.ddk.goods.detail",  # API方法名
    "client_id": client_id,
    "timestamp": timestamp,
    "access_token": access_token,
    "goods_id_list": f'["{goods_id}"]'  # 商品ID列表,支持批量查询
}

# 4. 生成签名 (sign) - 拼多多API要求
# 4.1 按key排序参数
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 4.2 拼接键值对
param_str = client_secret
for key, value in sorted_params:
    param_str += key + str(value)
param_str += client_secret
# 4.3 计算MD5
sign = hashlib.md5(param_str.encode('utf-8')).hexdigest().upper()
params["sign"] = sign

# 5. 发送GET请求
response = requests.get(api_url, params=params)

# 6. 处理响应
if response.status_code == 200:
    data = response.json()
    # 检查API返回是否成功
    if data.get("error_response"):
        error_code = data["error_response"]["error_code"]
        error_msg = data["error_response"]["error_msg"]
        print(f"API调用失败! 错误码: {error_code}, 错误信息: {error_msg}")
    else:
        # 提取商品详情
        goods_detail = data["goods_detail_response"]["goods_details"][0]  # 取第一个商品
        # 示例: 输出商品名称和价格
        print("商品名称:", goods_detail["goods_name"])
        print("商品价格:", goods_detail["min_group_price"] / 100)  # 价格单位为分,需除以100
        # 可以继续解析其他字段: 图片、描述、规格等
        # print(json.dumps(goods_detail, indent=2, ensure_ascii=False))  # 打印完整详情
else:
    print("网络请求失败, 状态码:", response.status_code)

参数说明

  • client_idclient_secret: 在拼多多开放平台创建应用后获得。
  • access_token: 需要通过OAuth2.0授权流程获取,代表用户或商家的授权。具体获取方法请参考开放平台文档。
  • goods_id_list: 需要查询的商品ID列表,用JSON数组格式表示。示例中查询单个商品。
  • timestamp: 请求发起的时间戳,精确到秒。
  • sign: 根据 client_secret、所有参数(按key排序后拼接)和 client_secret 生成的MD5签名,用于验证请求合法性。

响应数据结构 (主要字段示例)

成功的响应中,商品详情主要包含在 goods_detail_response -> goods_details 列表中。每个商品对象包含丰富的信息,例如:

  • goods_id: 商品ID
  • goods_name: 商品名称
  • goods_desc: 商品描述
  • goods_image_url: 商品主图
  • min_group_price: 最小成团价 (单位:分)
  • category_id: 商品类目ID
  • category_name: 商品类目名称
  • mall_id: 店铺ID
  • mall_name: 店铺名称
  • goods_gallery_urls: 商品轮播图列表
  • goods_properties: 商品规格属性列表
  • ... (更多字段请查阅官方文档)

注意事项

  1. 权限申请: 确保你的应用已申请并获得调用 pdd.ddk.goods.detail 接口的权限。
  2. 访问令牌管理: access_token 有有效期(通常2小时),过期后需要刷新或重新获取。生产环境需要实现令牌的自动刷新逻辑。
  3. 频率限制: 拼多多API对调用频率有限制,请遵守平台规则,避免高频请求触发限流。
  4. 沙箱环境: 开发阶段建议使用开放平台提供的沙箱环境进行测试。
  5. 错误处理: 务必检查响应中的 error_response 字段,并根据错误码 (error_code) 进行相应的错误处理。常见错误如令牌过期 (error_code=61001)。
  6. 数据单位: 注意价格等字段的单位(如分),在展示给用户前需要转换。

结语

通过拼多多开放平台的 pdd.ddk.goods.detail API,开发者可以方便地根据商品ID获取到详细的商品数据。掌握API调用、参数构造、签名生成和响应解析是成功集成的关键。在开发过程中,务必参考最新的拼多多开放平台官方文档以获取最准确的接口定义和参数要求。