一、淘宝开放平台 API 接入
1. 接入准备(必备步骤)
| 步骤 | 操作内容 | 注意事项 |
|---|---|---|
| 注册账号 | 访问淘宝开放平台,完成企业 / 个人认证 | 企业账号权限更全,个人账号部分接口受限 |
| 创建应用 | 控制台→应用管理→创建应用,选择 "自用型"/"他用型" | 应用名称避免敏感词,描述清晰业务场景 |
| 获取密钥 | 审核通过后获取AppKey和AppSecret(核心凭证) | 严格保密,泄露会导致安全风险 |
| 申请权限 | 选择所需接口(如商品、订单、物流)提交审核 | 每个接口需单独申请,说明用途 |
2. 认证与调用流程
- 签名机制:MD5/HMAC-SHA256,按参数名 ASCII 排序后加密
- 核心参数:app_key、method、timestamp、sign、业务参数
- Python 调用示例(商品详情接口 taobao.item.get):
python
运行
import requests import hashlib import time def taobao_api_call(app_key, app_secret, num_iid): params = { "app_key": app_key, "method": "taobao.item.get", "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "2.0", "num_iid": num_iid, "fields": "num_iid,title,price,pics,desc" } # 生成签名 sorted_params = sorted(params.items(), key=lambda x: x[0]) sign_str = app_secret + ''.join([f"{k}{v}" for k, v in sorted_params]) + app_secret params["sign"] = hashlib.md5(sign_str.encode()).hexdigest().upper() response = requests.get("http://gw.api.taobao.com/router/rest", params=params) return response.json() # 使用示例 result = taobao_api_call("your_app_key", "your_app_secret", "123456789") print(result)3. 核心接口推荐
- 商品:taobao.item.get(详情)、taobao.items.onsale.get(在售)
- 订单:taobao.trade.fullinfo.get(详情)、taobao.trades.sold.get(已售)
- 物流:taobao.logistics.online.send(发货)
二、京东开放平台 API 接入
1. 接入准备
| 步骤 | 操作内容 | 关键信息 |
|---|---|---|
| 注册入驻 | 访问京东开放平台,完成企业认证 | 仅支持企业账号申请 API 权限 |
| 创建应用 | 开发者中心→应用管理→创建应用 | 选择应用类型(如 "电商服务") |
| 获取密钥 | 自动生成AppKey和AppSecret | 可设置 IP 白名单增强安全性 |
| 授权流程 | OAuth2.0,获取 access_token(有效期 24 小时) | 需用户授权确认 |
2. 签名与调用示例
- 签名规则:参数 ASCII 排序→拼接→HMAC-SHA256/MD5 加密
- Python 调用示例(商品详情接口 jingdong.item.get):
python
运行
import requests import hmac import hashlib import time def jd_api_call(app_key, app_secret, sku_id): params = { "app_key": app_key, "method": "jingdong.item.get", "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "1.0", "sku_id": sku_id, "sign_method": "hmac-sha256" } # 生成签名 sorted_params = sorted(params.items(), key=lambda x: x[0]) sign_str = '&'.join([f"{k}={v}" for k, v in sorted_params]) signature = hmac.new(app_secret.encode(), sign_str.encode(), hashlib.sha256).hexdigest() params["sign"] = signature response = requests.get("https://api.jd.com/routerjson", params=params) return response.json() # 使用示例 result = jd_api_call("your_app_key", "your_app_secret", "123456") print(result)3. 核心接口推荐
- 商品:jingdong.item.get(详情)、jingdong.item.search(搜索)
- 订单:jingdong.pop.order.get(详情)、jingdong.pop.order.list.get(列表)
- 库存:jingdong.sku.stock.get(查询)
三、亚马逊 SP-API 接入(新版推荐)
1. 接入准备(SP-API 为 MWS 升级版)
| 步骤 | 操作内容 | 重要提示 |
|---|---|---|
| 注册开发者 | 访问亚马逊开发者账号 | 需关联卖家账号 |
| 创建应用 | 选择 Selling Partner API,填写应用信息 | 获取Client ID和Client Secret |
| IAM 配置 | 创建 IAM 用户,生成Access Key和Secret Key | 需附加 SP-API 权限策略 |
| 授权流程 | OAuth2.0 或自授权,获取Refresh Token | 私用应用可自我授权 |
2. 认证与调用流程
- 双认证机制:LWA 令牌(短期)+ IAM 凭证(长期)
- Python 调用示例(订单查询接口):
python
运行
import requests import jwt import time from datetime import datetime, timedelta def get_lwa_token(client_id, client_secret, refresh_token): url = "https://api.amazon.com/auth/o2/token" payload = { "grant_type": "refresh_token", "refresh_token": refresh_token, "client_id": client_id, "client_secret": client_secret } response = requests.post(url, data=payload) return response.json()["access_token"] def amazon_sp_api_call(access_token, seller_id, marketplace_ids): url = f"https://sellingpartnerapi-na.amazon.com/orders/v0/orders" headers = { "x-amz-access-token": access_token, "x-amz-date": datetime.utcnow().strftime("%Y%m%dT%H%M%SZ"), "Authorization": f"Bearer {access_token}" } params = { "MarketplaceIds": marketplace_ids, "CreatedAfter": (datetime.utcnow()-timedelta(days=7)).isoformat() + "Z" } response = requests.get(url, headers=headers, params=params) return response.json() # 使用示例 access_token = get_lwa_token("your_client_id", "your_client_secret", "your_refresh_token") result = amazon_sp_api_call(access_token, "your_seller_id", ["ATVPDKIKX0DER"]) print(result)3. 核心接口分类
- 订单 API:查询、更新、确认订单
- 商品 API:目录、定价、库存管理
- 物流 API:配送、追踪、退货处理
四、速卖通开放平台 API 接入
1. 接入准备
| 步骤 | 操作内容 | 权限说明 |
|---|---|---|
| 注册账号 | 访问速卖通开放平台openservice.aliexpress.com | 企业账号需营业执照,个人账号权限有限 |
| 创建应用 | 应用管理→创建应用,选择应用类型openservice.aliexpress.com | 获取AppKey和AppSecret |
| 授权获取 | 通过 OAuth2.0 获取SessionKey(有效期 1 年) | 需卖家账号授权确认 |
| 申请权限 | 选择所需接口提交审核openservice.aliexpress.com | 商品详情等核心接口需企业资质 |
2. 签名与调用示例
- 签名机制:HMAC-SHA1,参数排序后加密
- Python 调用示例(商品详情接口):
python
运行
import requests import hmac import hashlib import time def aliexpress_api_call(app_key, app_secret, session_key, product_id): params = { "app_key": app_key, "method": "aliexpress.product.redefining.getproductdetail", "timestamp": str(int(time.time()*1000)), "format": "json", "v": "1.0", "session": session_key, "product_id": product_id, "sign_method": "hmac-sha1" } # 生成签名 sorted_params = sorted(params.items(), key=lambda x: x[0]) sign_str = '&'.join([f"{k}={v}" for k, v in sorted_params]) signature = hmac.new(app_secret.encode(), sign_str.encode(), hashlib.sha1).hexdigest() params["sign"] = signature response = requests.get("https://api.aliexpress.com/rest", params=params) return response.json() # 使用示例 result = aliexpress_api_call("your_app_key", "your_app_secret", "your_session_key", "123456789") print(result)3. 核心接口推荐
- 商品:getproductdetail(详情)、productsearch(搜索)
- 订单:order_get(详情)、order_list(列表)
- 物流:logistics_tracking(追踪)
五、四大平台接入对比与避坑指南
| 平台 | 认证方式 | 签名算法 | 调用限制 | 核心注意事项 |
|---|---|---|---|---|
| 淘宝 | AppKey + 签名 + 授权 | MD5/HMAC-SHA256 | QPS=10,日限 10 万次 | 接口需单独申请,审核严格 |
| 京东 | AppKey + 签名 + OAuth2.0 | HMAC-SHA256/MD5 | QPS=5,日限 5 万次 | 仅企业账号可申请,IP 白名单必设 |
| 亚马逊 | LWA+IAM 双认证 | JWT+OAuth2.0 | 按区域限制 | 需配置 MarketplaceIds,时区统一用 UTC |
| 速卖通 | AppKey + 签名 + SessionKey | HMAC-SHA1 | QPS=5,日限 1 万次 | 个人账号权限有限,企业认证更优 |
通用避坑要点
- 签名规范:严格按参数 ASCII 排序,加密前避免空格 / 编码错误
- 权限管理:最小权限原则,定期轮换密钥,设置 IP 白名单
- 错误处理:捕获 4xx/5xx 状态码,实现自动重试机制(指数退避)
- 数据合规:用户数据需授权,禁止爬虫行为,遵守平台 API 协议
- 版本兼容:关注平台 API 版本更新,及时迁移至新版接口(如亚马逊 SP-API 替代 MWS)
六、快速接入建议
- 优先选择官方 SDK:各平台提供 Python/Java/PHP 等 SDK,简化签名与请求处理
- 环境隔离:开发 / 测试 / 生产环境分开配置,使用不同应用密钥
- 监控告警:建立 API 调用监控,实时跟踪成功率、响应时间和限流情况
- 批量处理:对批量接口(如商品列表、订单批量查询)优化参数,减少请求次数