一、前置准备
- 注册与认证
- 访问淘宝开放平台,使用淘宝账号登录并完成企业实名认证(个人账号需升级为企业账号)。
- 创建应用:进入【管理中心】→【应用管理】→【创建应用】,填写应用名称、描述、回调地址(需HTTPS且ICP备案),选择应用类型(如Web应用)。
- 获取密钥
- 应用审核通过后,在【应用详情】获取
App Key和App Secret(密钥需妥善保管,用于API签名)。
- 应用审核通过后,在【应用详情】获取
二、权限申请
- 申请API权限
- 在【权限管理】页面申请以下核心权限:
taobao.trades.sold.get:批量获取已卖出交易数据(支持时间范围、状态筛选)。taobao.trade.fullinfo.get:获取单笔交易详情(含订单金额、收货信息等)。taobao.trades.sold.increment.get:增量同步变更订单(适合实时同步场景)。
- 提交申请后,淘宝将审核业务场景(如电商ERP、数据分析),通常1-3个工作日完成。
- 在【权限管理】页面申请以下核心权限:
三、获取Access Token
- OAuth2.0授权流程
-
构造授权URL引导用户授权(非自己店铺需用户授权):
`https://oauth.taobao.com/authorize?response_type=code&client_id=你的AppKey&redirect_uri=回调地址&state=安全令牌` -
用户同意后,获取
code参数,通过以下代码换取access_token:python`import requests def get_access_token(app_key, app_secret, code, redirect_uri): url = "https://oauth.taobao.com/token" payload = { 'grant_type': 'authorization_code', 'code': code, 'client_id': app_key, 'client_secret': app_secret, 'redirect_uri': redirect_uri } response = requests.post(url, data=payload) return response.json() # 返回包含access_token的JSON`
-
四、调用API获取订单
-
接口调用示例(Python)
-
使用
taobao.trades.sold.get获取订单列表:python`import time import requests from hashlib import md5 def generate_sign(params, secret): sorted_params = sorted(params.items()) query_string = ''.join(f"{k}{v}" for k, v in sorted_params) sign_str = f"{secret}{query_string}{secret}" return md5(sign_str.encode()).hexdigest().upper() def get_orders(app_key, app_secret, session_key): url = "https://eco.taobao.com/router/rest" timestamp = time.strftime("%Y-%m-%d %H:%M:%S") params = { 'method': 'taobao.trades.sold.get', 'app_key': app_key, 'session': session_key, 'timestamp': timestamp, 'format': 'json', 'v': '2.0', 'sign_method': 'md5', 'fields': 'tid,status,payment,created,receiver_name,receiver_address', 'start_created': '2025-01-01 00:00:00', 'end_created': '2025-12-31 23:59:59', 'page_no': 1, 'page_size': 50 } params['sign'] = generate_sign(params, app_secret) response = requests.get(url, params=params) return response.json()`
-
-
关键参数说明
fields:指定返回字段(如订单号tid、状态status、金额payment、收货信息等)。start_created/end_created:订单创建时间范围(精确到秒)。page_no/page_size:分页参数(单页最大50条)。
五、数据处理与注意事项
- 响应解析
-
成功响应示例:
json`{ "taobao_trades_sold_get_response": { "trades": { "trade": [ { "tid": "123456789", "status": "TRADE_CLOSED", "payment": "199.00", "created": "2025-01-01 12:00:00", "receiver_name": "张三", "receiver_address": "浙江省杭州市余杭区..." } ] } } }` -
错误处理:检查
code和msg字段(如isp.no-permission表示权限不足,invalid-signature表示签名错误)。
-
- 安全与合规
- 频率限制 :免费版QPS≤5,商用需购买API套餐(如10万次/月起),超限返回
isp.no-permission。 - 数据脱敏 :买家手机号、地址等敏感信息默认脱敏(如
138****8888)。 - 合规要求:遵守《个人信息保护法》,禁止未授权数据抓取或滥用。
- 频率限制 :免费版QPS≤5,商用需购买API套餐(如10万次/月起),超限返回
六、高级场景
- 增量同步
- 使用
taobao.trades.sold.increment.get获取变更订单(如状态更新、退款),参数type支持create(新增)、update(修改)等。
- 使用
- 批量操作
- 使用
taobao.topats.trades.sold.get异步获取大批量订单(支持百万级数据),需配合任务ID查询结果。
- 使用
七、常见问题
- 签名错误:检查参数排序(ASCII升序)、加密方式(MD5/HMAC-SHA256)及密钥正确性。
- 回调地址无效:确保域名已ICP备案,使用HTTPS协议,无特殊字符。
- 权限申请被拒:补充详细业务场景说明,提供公司资质证明,联系客服复审。
官方文档参考:淘宝开放API文档
建议定期关注API更新日志,适配新版本接口(如v3.0),并通过沙箱环境验证功能后再上线生产环境。