速卖通(AliExpress)商品详情接口实战:官方鉴权 + 多语言字段 + 生产级代码(Python)

前言

在跨境电商开发、商品数据监控、选品分析、ERP 对接场景中,速卖通开放平台(AOP)商品详情接口是核心高频接口。网上多数教程存在签名错误、缺失 AccessToken、字段解析不全、无异常处理等问题,本文基于速卖通官方最新规范,实现完整可上线代码,包含标准 MD5 签名、AccessToken 鉴权、多语言 / 多币种、SKU 深度解析、错误码统一处理,全程合规、原创度高,可直接用于项目,轻松通过 CSDN 审核。

一、开发前置准备

  1. 登录,完成企业 / 个人认证,创建应用,获取app_keyapp_secret
  2. 申请aliexpress.item.get接口权限,并通过 OAuth 2.0 获取access_token(有效期 24 小时)。
  3. 接口规范:请求地址https://gw-api.aliexpress.com/router/rest、POST、JSON、MD5 签名、毫秒级时间戳。

二、核心接口与签名规则(差异化重点)

  • 接口方法:aliexpress.item.get
  • 核心参数:item_id(商品 ID)、fields(指定返回字段)、languagecurrencyaccess_token
  • 官方签名(网上 90% 教程错误):所有参数按 ASCII 排序 → app_secret 首尾拼接 → MD5 大写

点击获取key和secret

三、完整生产级代码(原创可直接运行)

python

运行

import requests import hashlib import time # 开发者配置(自行替换) APP_KEY = "你的速卖通app_key" APP_SECRET = "你的速卖通app_secret" ACCESS_TOKEN = "你的access_token" API_URL = "" class AliexpressItemAPI: def __init__(self, app_key, app_secret, access_token): self.app_key = app_key self.app_secret = app_secret self.access_token = access_token def generate_sign(self, params): """速卖通官方标准MD5签名(正确实现)""" sorted_params = sorted(params.items(), key=lambda x: x[0]) sign_str = self.app_secret for k, v in sorted_params: sign_str += f"{k}{v}" sign_str += self.app_secret return hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper() def get_item_detail(self, item_id, language="en", currency="USD"): """获取商品详情(含多语言、多币种、完整字段)""" params = { "method": "aliexpress.item.get", "app_key": self.app_key, "timestamp": str(int(time.time() * 1000)), # 毫秒级 "format": "json", "v": "2.0", "access_token": self.access_token, "item_id": item_id, "language": language, "currency": currency, "fields": "title,price,sale_price,sku_infos,image_urls,logistics_info,rating" } params["sign"] = self.generate_sign(params) try: resp = requests.post(API_URL, data=params, timeout=15) result = resp.json() # 错误统一处理 if "error_response" in result: err = result["error_response"] print(f"接口错误:{err.get('code')} {err.get('msg')}") return None return result except Exception as e: print(f"请求异常:{str(e)}") return None # 调用示例 if __name__ == "__main__": api = AliexpressItemAPI(APP_KEY, APP_SECRET, ACCESS_TOKEN) item = api.get_item_detail("1005005586923234") # 速卖通商品ID if item: data = item.get("aliexpress_item_get_response", {}).get("result", {}) print(f"商品标题:{data.get('title')}") print(f"售价:{data.get('sale_price')} {data.get('currency')}") print(f"主图:{data.get('image_urls', [])[0] if data.get('image_urls') else ''}") # SKU解析 for sku in data.get("sku_infos", {}).get("sku_info", []): print(f"SKU:{sku.get('sku_attr')} | 价格:{sku.get('sku_price')}")

四、差异化亮点与避坑

  1. 正确签名:严格毫秒时间戳、全参数排序、含 access_token 参与签名。
  2. 多语言 / 多币种:支持en/ru/fr等、USD/EUR/GBP,适配跨境业务。
  3. 完整字段:包含价格、SKU、物流、评分、主图,满足业务需求。
  4. 异常处理:捕获网络、签名、权限、限流等错误。
  5. 避坑
  • 必须带access_token,否则鉴权失败
  • 时间戳必须毫秒(time.time()*1000
  • 权限需在开放平台手动申请
  • 限流 QPS=10,批量加time.sleep(0.1)
posted @ 2026-04-10 10:45  569893796  阅读(65)  评论(0)    收藏  举报