×

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

Ace Ace 发表于2026-04-10 10:43:30 浏览9 评论0

抢沙发发表评论

前言

在跨境电商开发、商品数据监控、选品分析、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 = "gw-api.aliexpress.com/r" 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)

群贤毕至

访客