淘宝网
开放平台错误自查手册
本文档针对2.0服务,文档中的2.0的说法是相对已下线的1.0而言的
墨灵
2010-10-15

目录
一、    错误处理流程概览    3
二、    服务器响应内容透析    4
1.    调用成功返回格式    4
2.    调用错误返回    4
1)    http连接错误    4
2)    服务端错误总述    4
3)    平台解析错误    5
4)    业务处理错误    6
三、    响应格式错误处理    9
1.    响应格式格式错误,但数据正确    9
2.    响应格式错误,数据也错误    10
四、    平台级错误处理    11
五、    业务级错误处理    13
1.    参数错误    13
2.    权限控制    13
3.    用户不存在    13
4.    服务错误    15
a)    服务调用错误    15
b)    服务调用异常    15
c)    远程调用错误    15
d)    Top解析错误    15
六、    返回参数缺失处理    16
1.    整个消息体为空或缺少文档中说明的结构体返回。    16
2.    缺少fields指定字段返回    16
七、    总结    17
一、 错误处理流程概览
图表 1 错误处理流程
    从这个错误处理流程可知,在整个错误处理的过程中,一共可以分为3条主要的流程:请求解析异常流程处理平台级错误处理业务调用错误处理。当然,这一切处理的最初也是最重要的一步就是:将服务器响应内容保留下来。
二、 服务器响应内容透析
服务器响应内容,顾名思义就是isv调用top服务得到的响应的内容。这些内容能够最真实的反应出isv请求的问题和服务器当前的情况,也最能够帮助isv到问题的所在。
服务器响应内容一般分为两种:一种是wiki文档中所编写的成功调用所返回的字段,另一种是调用失败的返回的错误相关信息。
1. 调用成功返回格式
2.0的服务调用成功的响应返回信息相对的规范化了。2.0的响应内容主要也可以分为3层:最外一层是你调用服务的名称所对应的响应标记,如:获取单个商品(
的响应最外层为"item_get_response":{ },表示这是获取单个商品的响应;中间一层是返回结构体的标记。如果结构体是单个,那么2.0返回的这一层里面就会是单个的结构,如:获取的单个商品的结构体就是"item":{ };反之,如果结构体是多个,那么列表也会明显的表示出来,如:搜索商品列表的结构体就会是”items”:{“item”:[{ },{ }……]}。最外层的items表示这是一个商品的列表,后面的item表示列表中的每一个子结构体都是属于商品item的,然后就跟着商品的数据;最内一层就商品的具体字段信息了。
2. 调用错误返回
当调用发生错误的时候,一般情况下可以分为几大类错误信息的返回:http连接错误、平台解析错误、业务处理错误。这三种类型的错误分别代表了:淘宝服务器、淘宝接入平台、top-api业务,几个层次上出现的问题。
1) http连接错误
http连接错误是请求通信过程中出现的错误,这类型错误通常由http响应码标记出来。http响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。
响应码分五种类型,由它们的第一位数字表示:
1xx:信息,请求收到,继续处理
2xx:成功,行为被成功地接受、理解和采纳
3xx:重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误,请求包含语法错误或者请求无法实现
5xx:服务器错误,服务器不能实现一种明显无效的请求
Isv调用top服务最常收到就是200http请求成功;404:未到请求的服务;500内部服务器错误等等。如果用户收到的响应码是404,表示用户的网络有问题或者top被和谐了……如果用户收到的响应码是500,表示网络是ok的,是top的服务无法响应。
2) 服务端错误总述
平台解析错误和业务处理错误都是http成功访问到top服务(http响应码返回为200)之后所产生的错信息,他们top处理isv请求过程中出现的问题。
2.0的错误响应信息的最外层为{“error_response”:” ”},表示这是调用服务失败所返回的错误信息。信息体里面一层总共包含了五个元素:"args":{"arg":[{“key”:“ ”,”value”:” ”},{“key”:“ ”,”value”:” ”},{“key”:“ ”,”value”:” ”}……]}”code”:” ” “msg”:” ””sub_code”:” ””sub_msg”:” ”args表示用户传入的参数列表是什么,里面是一个arg的列表会包含用户传入的所有参数信息,每个arg表示一个参数的信息,key表示参数的名称,value表示参数的内容,用以方便用户定位自己的错误;code表示用户调用错误的错误码是多少,小于200表示平台级错误,200-1000之间表示大范围的业务错误,即哪一类型的api调用发生了错误(根据api的大类来分,如:商品类的api530,交易类的api520,等);msg表示大类型的错误码所对应的错误信息,一般不具备独立的debug作用,需要和sub_codesub_msg一起使用才行;sub_code是调用错误的子错误码,他表示用户调用错误的原因;sub_msg是子错误码所对应的错误信息,他用来补充细化子错误码的错误原因的。例如调用2.0服务错误时返回的错误信息:
{"error_response":{"args":{"arg":[{"key":"app_key","value":"15739"},{"key":"fields","value":"list_time,delist_time,approve_status"},{"key":"format","value":"json"},{"key":"method","value":""},{"key":"nick","val
ue":"tbtest561"},{"key":"partner_id","value":"TOPTEST"},{"key":"sign","value":"668FB4A049F71A1C845EF8C05B1F3E66"},{"key":"timestamp","value":"2010-03-05 18:03:06.325"},{"key":"v","value":"2.0"}]},"code":530,"msg":"Remote service error","sub_code":"missing-parameter","sub_msg":"iidnum_iid至少要传入一个"}}
这个信息的开头为error_response,表示这是调用错误所返回的错误信息。里面的args列出了用调用这个接口传入的信息有:
[{"key":"app_key","value":"15739"},{"key":"fields","value":"list_time,delist_time,approve_status"},{"key":"format","value":"json"},{"key":"method","value":""},{"key":"nick","value":"tbtest561"},{"key":"partner_id","value":"TOPTEST"},{"key":"sign","value":"668FB4A049F71A1C845EF8C05B1F3E66"},{"key":"timestamp","value":"2010-03-05 18:03:06.325"},{"key":"v","value":"2.0"}]
这些信息是从用户的请求信息里面解析出来的。错误码code530,表示这是调用商品的a
pi所产生的错误。错误信息msgRemote service error表示这是调用业务处理所产生的错误。子错误码sub_code为:missing-parameter,表示这个错误是因为缺少了参数所产生的。子错误信息sub_msg为:iidnum_iid至少要传入一个,表示少传的参数为iidnum_iid。这所有的错误信息叠加起来可以知道,这个错误是用户调用接口时业务处理发现用户没有传入商品id所导致的。
3) 平台解析错误
平台解析错误是指parse error怎么解决top返回的错误码小于100的情况。平台解析是非业务性的普适的校验接入层,主要用于对用户的各种权限、和入参进行最基本的校验。现在的平台错误码主要有:
错误码
错误描述(英文)
错误描述(中文)
错误来源
3
Upload Fail
图片上传失败
平台本身
4
User Call Limited
用户调用次数超限
ISV
5
Session Call Limited
会话调用次数超限
ISV
6
Partner Call Limited
合作伙伴调用次数超限
ISV
7
App Call Limited
应用调用次数超限
ISV
8
App Call Exceeds Limited Frequency
应用调用频率超限
ISV
9
Http Action Not Allowed
HTTP方法被禁止(请用大写的POSTGET
ISV
10
Service Currently Unavailable
服务不可用
平台本身
11
Insufficient ISV Permissions
开发者权限不足
ISV
12
Insufficient User Permissions
用户权限不足
ISV
13
Insufficient Partner Permissions
合作伙伴权限不足
ISV
15
Remote Service Error
远程服务出错
平台本身
21
Missing Method
缺少方法名参数
平台本身
22
Invalid Method
不存在的方法名
ISV
23
Invalid Format
非法数据格式
ISV
24
Missing Signature
缺少签名参数
ISV
25
Invalid Signature
非法签名
ISV
26
Missing Session
缺少SessionKey参数
平台本身
27
Invalid Session
非法的SessionKey参数
ISV
28
Missing App Key
缺少AppKey参数
平台本身
29
Invalid App Key
非法的AppKey参数
ISV
30
Missing Timestamp
缺少时间戳参数
平台本身
31
Invalid Timestamp
非法的时间戳参数
ISV
32
Missing Version
缺少版本参数
平台本身
33
Invalid Version
非法的版本参数
ISV
34
Unsupported Version
不支持的版本号
ISV
40
Missing Required Arguments
缺少必选参数
平台本身
41
Invalid Arguments
非法的参数
ISV
42
Forbidden Request
请求被禁止
ISV
43
Parameter Error
参数错误
ISV
图表 2 平台错误码列表

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。