以下是关于淘宝获取卖出的商品订单列表API的深度解析指南,结合官方文档和开发者经验整理,包含调用方法、参数详解、返回结果解析及常见问题处理:
一、API核心接口说明
1. taobao.trades.sold.get(官方基础接口)
- 功能:获取卖家近3个月内已卖出的订单列表(支持批量查询)。
- 适用场景:初始化订单同步、历史订单分析。
- 请求参数:
- 公共参数:
app_key
:应用唯一标识(需申请)。timestamp
:时间戳(防重放攻击)。sign
:请求签名(HMAC-SHA1加密)。format
:返回格式(json/xml)。
- 业务参数:
fields
:指定返回字段(如tid,status,payment,created
)。start_created
/end_created
:订单创建时间范围(格式:yyyy-MM-dd HH:mm:ss
)。page_size
:每页订单数(默认40,最大200)。page_no
:页码(默认1)。use_has_next
:是否返回分页标识(true
/false
)。
- 公共参数:
2. taobao.seller_order_list(高级筛选接口)
- 功能:支持按状态、时间、买家昵称等多条件筛选订单。
- 适用场景:精准查询特定订单(如未发货、退款中订单)。
- 请求参数:
- 筛选条件:
tabCode
:订单状态分类(如waitSend
待发货、refunding
退款中)。dateBegin
/dateEnd
:订单时间范围。buyerNick
:买家昵称(模糊匹配)。itemTitle
:商品标题关键词。orderId
:订单号精确查询。
- 分页参数:
page
:页码。pageSize
:每页数量(默认20)。
- 筛选条件:
二、API调用流程详解
1. 准备工作
- 注册开发者账号:访问淘宝开放平台/万邦开放平台完成实名认证。
- 创建应用:选择“商家服务”类型,申请
订单管理
权限,获取App Key
和App Secret
。 - 权限审核:提交应用后需等待淘宝审核(通常1-3工作日)。
2. 生成签名(以Python为例)
python复制代码
import hmac | |
import hashlib | |
import urllib.parse | |
import time | |
def generate_sign(params, app_secret): | |
params_filtered = {k: v for k, v in params.items() if k not in ['sign']} | |
sorted_params = sorted(params_filtered.items(), key=lambda x: x[0]) | |
string_to_sign = '&'.join([f"{urllib.parse.quote(k)}={urllib.parse.quote(str(v))}" for k, v in sorted_params]) | |
sign = hmac.new(app_secret.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha1).hexdigest().upper() | |
return sign | |
# 示例参数 | |
params = { | |
'app_key': 'your_app_key', | |
'method': 'taobao.trades.sold.get', | |
'timestamp': str(int(time.time())), | |
'format': 'json', | |
'fields': 'tid,status,payment', | |
'start_created': '2025-04-01 00:00:00', | |
'end_created': '2025-04-07 23:59:59' | |
} | |
sign = generate_sign(params, 'your_app_secret') | |
params['sign'] = sign |
3. 发送HTTP请求
- 请求URL:
https://gw.api.taobao.com/router/rest
- 请求方式:GET/POST均可(建议POST传递敏感参数)。
- 示例代码(Python):
python复制代码
import requests | |
response = requests.post('https://gw.api.taobao.com/router/rest', data=params) | |
data = response.json() | |
if data['error_response']: | |
print(f"错误码:{data['error_response']['code']}, 描述:{data['error_response']['msg']}") | |
else: | |
trades = data['trades_sold_get_response']['trades']['trade'] | |
for trade in trades: | |
print(f"订单号:{trade['tid']}, 状态:{trade['status']}, 实付金额:{trade['payment']}") |
三、返回结果解析
1. 成功响应结构
json复制代码
{ | |
"trades_sold_get_response": { | |
"trades": { | |
"trade": [ | |
{ | |
"tid": "订单号", | |
"status": "交易状态(如TRADE_FINISHED)", | |
"payment": "实付金额(单位:分)", | |
"created": "下单时间", | |
"buyer_nick": "买家昵称", | |
"orders": { | |
"order": [ | |
{ | |
"oid": "子订单号", | |
"title": "商品标题", | |
"num": "购买数量", | |
"price": "单价(分)" | |
} | |
] | |
} | |
} | |
] | |
}, | |
"total_results": "总订单数" | |
} | |
} |
2. 状态码映射表
状态码(status) | 含义 |
---|---|
WAIT_BUYER_PAY | 等待买家付款 |
WAIT_SELLER_SEND | 等待卖家发货 |
WAIT_BUYER_CONFIRM | 等待买家确认收货 |
TRADE_FINISHED | 交易完成 |
TRADE_CLOSED | 交易关闭(如退款成功) |
四、常见问题与解决方案
1. 签名错误(错误码:15)
- 原因:参数排序错误、App Secret泄露或编码问题。
- 解决:
- 检查参数是否按ASCII码升序排列。
- 确保App Secret未包含在日志或代码中。
- 使用工具(如https://api.taobao.com/apidoc/sign.htm)验证签名。
2. 权限不足(错误码:11)
- 原因:应用未申请订单权限或审核未通过。
- 解决:登录开放平台,在“应用管理”中补全权限申请。
3. 频率超限(错误码:16)
- 限制规则:默认每小时1000次调用,可申请提升配额。
- 解决:
- 分散请求时间(如使用队列分批查询)。
- 联系行业小二申请更高QPS。
4. 时间范围过大
- 限制:单次查询时间跨度不超过3个月。
- 解决:拆分查询为多个时间段(如按月查询)。
五、高级功能扩展
- 增量同步:使用
taobao.trades.sold.increment.get
接口获取订单变更数据(适用于实时更新场景)。 - 订单详情查询:调用
taobao.trade.fullinfo.get
获取物流、退款等详细信息。 - 自动化工具:结合Airflow或自定义脚本实现定时拉取订单数据到本地数据库。
通过以上指南,开发者可快速实现订单数据的获取与管理。建议在实际调用前,使用https://api.taobao.com/apidoc/explorer.htm验证参数有效性。