淘宝REST API 技术手册(精简版) 淘宝REST API 技术手册精简版一、基础调用规范统一网关https://gw.api.taobao.com/router/rest请求方式POST响应格式支持 JSON/XML接口版本固定 v2.0核心公共参数全部必传缺失直接拦截参数名说明app_key淘宝开放平台应用唯一标识method接口方法名如taobao.item.gettimestamp时间戳格式yyyy-MM-dd HH:mm:ss超时15分钟拒绝format返回格式推荐jsonv版本号固定2.0signMD5 参数签名安全校验核心session用户授权令牌订单/隐私类接口必填直接访问网关且未携带method参数时会返回错误码21 Missing method需在请求体中指定目标接口方法名。二、MD5 签名算法签名规则剔除参数中的sign字段与所有空值参数按参数名 ASCII 码升序排序拼接为keyvalue无分隔符字符串字符串首尾拼接APP_SECRET做 MD5 加密输出 32 位小写十六进制结果。Python 签名工具类importhashlibimporttimefromurllib.parseimportquote_plus APP_KEY你的APP_KEYAPP_SECRET你的APP_SECRETGATEWAY_URLhttps://gw.api.taobao.com/router/restdefgenerate_sign(params:dict)-str:# 过滤空值与签名字段filter_params{k:vfork,vinparams.items()ifvandknotin[sign,sign_method]}# ASCII升序排序sorted_paramssorted(filter_params.items(),keylambdax:x[0])# 拼接签名字符串sign_strAPP_SECRETfork,vinsorted_params:sign_strf{k}{quote_plus(str(v))}sign_strAPP_SECRET# MD5加密返回小写returnhashlib.md5(sign_str.encode(utf-8)).hexdigest().lower()defget_common_params(method:str)-dict:return{app_key:APP_KEY,method:method,format:json,v:2.0,timestamp:time.strftime(%Y-%m-%d %H:%M:%S)}三、接口调用代码示例1. 商品详情查询taobao.item.get公开数据接口无需用户授权。importrequestsdeftaobao_item_get(num_iid:str)-dict:methodtaobao.item.getparamsget_common_params(method)# 业务参数按需指定返回字段params[fields]num_iid,title,price,pic_url,stock,detail_url,seller_nickparams[num_iid]num_iid# 生成签名params[sign]generate_sign(params)try:responserequests.post(GATEWAY_URL,dataparams,timeout10)resultresponse.json()exceptExceptionase:return{code:-1,msg:f请求异常:{str(e)},data:None}iferror_responseinresult:errresult[error_response]return{code:err[code],msg:err[msg],data:None}return{code:0,msg:success,data:result[item_get_response][item]}# 调用示例# print(taobao_item_get(目标商品ID))2. 订单详情查询taobao.trade.fullinfo.get敏感数据接口需传入用户授权session。deftaobao_trade_get(tid:str,session_key:str)-dict:methodtaobao.trade.fullinfo.getparamsget_common_params(method)params[tid]tid params[session]session_key params[fields]tid,status,payment,create_time,pay_time,ordersparams[sign]generate_sign(params)try:resprequests.post(GATEWAY_URL,dataparams,timeout10)resultresp.json()exceptExceptionase:return{code:-1,msg:f请求异常:{str(e)},data:None}iferror_responseinresult:errresult[error_response]return{code:err[code],msg:err[msg],data:None}return{code:0,msg:success,data:result[trade_fullinfo_get_response][trade]}四、核心错误码对照表错误码错误描述排查方向21Missing method请求缺少method参数补充对应接口方法名40001app_key 不存在核对应用密钥确认应用状态正常40002签名错误检查参数排序、SECRET 匹配、特殊字符编码、时间戳40015接口方法不存在核对method拼写确认应用已开通该接口权限41001session 缺失/失效重新获取用户授权令牌42002请求频率超限降低调用频次增加本地缓存五、工程化优化要点字段裁剪fields参数仅传业务必需字段压缩响应体积本地缓存商品静态数据缓存 1~24 小时避免重复调用超时重试设置 10s 请求超时网络异常自动重试 2 次安全合规APP_SECRET仅后端存储禁止前端硬编码日志脱敏敏感参数。