附:API文档地址:查看。
API测试工具地址:查看。
错误码一览地址:查看。
平台常见技术问题自助排查地址: 查看所有FAQ。
支持中心操作文档:查看。
开发者发送HTTP请求淘宝数据之前的出现的问题,包括淘宝业务问题,商务问题,容器类错误问题。
1)淘宝业务问题
① 业务规则问题,比如:商品或用户被处罚等;
② 在淘宝页面操作不成功的问题,比如:在淘宝后台无法查看出售中的商品等;
2)商务问题
① 应用接入问题,比如:一个开发者可以注册多少个应用等;
② 应用审核问题,比如:哪些应用不支持接入等;
③ 应用上线问题,比如:调用频率是如何限制的等;
3)容器类错误问题
通过容器,用户可以授权开发者获取其数据信息,主要是页面上错误码在100到200之间的错误。
开发者发送HTTP请求淘宝数据之后的出现的问题,包括HTTP连接错误问题,平台级错误问题,业务级错误问题,这三种类型的错误问题分别是在访问淘宝服务器,TOP接入平台,淘宝后端业务服务器这三个层次上出现的问题。
1)HTTP连接错误问题:
请求淘宝服务器过程中出现的错误,这类型错误通常由HTTP响应码标记出来,HTTP响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。响应码分五种类型,由它们的第一位数字表示。
1xx:信息,请求收到,继续处理;
2xx:成功,行为被成功地接受、理解和采纳;
3xx:重定向,为了完成请求,必须进一步执行的动作;
4xx:客户端错误,请求包含语法错误或者请求无法实现;
5xx:服务器错误,服务器不能实现一种明显无效的请求;
开发者调用TOP服务最常收到就是200:http请求成功;404:未找到请求的服务;500内部服务器错误等。如果开发者收到的响应码是404,表示用户的网络有问题,如果开发者收到的响应码是响应码是500,表示网络是正常的但是top的服务无法响应。
如果是本地网络有问题可以直接输入命令行ping gw.api.taobao.com测试请求淘宝服务器的速度,如果速度很慢则要考虑服务器提速的问题,如果ping不通,则联系网络管理员确认服务器是否屏蔽淘宝域名。
2)平台级错误问题
请求TOP接入平台出现的错,此时TOP返回的错误码小于100,这种错误一般是由于用户的请求不符合权限,安全,流量和最基本的参数等校验引起的。
3)业务级错误问题
请求后端业务服务器出现的问题,返回的错误码在500到1000之间。具体的API子错误码及解决方案可参见对应API文档下面的错误码解释。
发现问题以后先定位问题类型,是淘宝店铺相关规则或者店铺功能操作类问题,可以咨询淘宝网服务中心:点击访问 。
如果是代码问题,按照一下思路判断
1)代码开发阶段,先查看报错日志的信息,是否代码本身编写问题或者网络问题, 代码编写问题可以通过网上搜索相关解决方案。
2)如果是API接口问题,先根据返回的错误码和报错信息,查看API文档和错误码文档,确认是否能直接解决;如无法解决,下一步可以通过API测试工具进行调用测试,看是否API测试工具正常调用接口。如不无法解决,可以提交工单反馈,工单信息中请提供测试工具截图和接口返回的requestid,方便问题排查。
3)线上运行阶段,突然出现异常,先检查部署服务器的CPU,内存、网络请求和load情况,确认机器是否正常。 如果是API接口问题,记录一下具体的请求的参数和返回的报错信息和requestid,提交工单进行反馈。
我从错误日志中分析出来taobao.item.recommend.add报isv.item-recommend-service- error:ERROR_MORE_THAN_ALLOWED_RECOMMEND_NUM(超过橱窗推荐总数)错误很多,该如何解决呢?
首先根据排查问题流程定位到API问题,再查看API文档中的错误码解决方案:
1)橱窗推荐的时候要求用户输入橱窗推荐总量,有的用户会多输,所以报橱窗推荐超过最大推荐数的错误,每天定时更新橱窗总量,橱窗总量=已推荐橱窗+剩余橱窗(不能完全杜绝这个错误);
2)开发者先调用taobao.shop.remainshowcase.get 接口获取卖家的剩余橱窗数,做好逻辑判断,再调用橱窗推荐的接口。
本地程序报连接重置错误且没有top的错误码返回,这类问题该如何解决?
建议:
1)合理切割任务,将任务粒度放小,减小事务时间,提高事务执行成功率,降低回滚代价;
2)合并任务中重复的内容,在时间间隔容许的范围内,减少可能重复的操作;
3)看是否有批量操作接口,减少单个循环调用次数;
4)控制工作线程池线程个数,根据实际性能和对方服务器处理能力设置并行任务个数;
线程并发开的越多未必成功率越高。
首先本地资源有限(开的越多线程,本地GC回收频率越高,影响执行速度,效率反而降低);
其次,对方可能会由于你的ip连接数过多主动拒绝连接;(DOS保护)
再次,信道无法复用。(当前1.6JDK版本已经能够较好的复用TCP信道,并发瞬间开大量的TCP信道本身就是一种损耗,有时候部分串行化,某种程度上会减少产生TCP信道的数目合理利用信道,提高效率和成功率,客户端做好流控也很重要)
网络丢包问题解决方案
问题背景:
1)由于互联网物理线路可靠性不是100%,ISV服务器到TOP之间的通信存在数据丢失情况;
2)开发者需要一种方法来验证每次访问取得的数据是不是完整的,有没有丢包;
3)目前有的ISV通过这样的方法校验完整性:连续多次调用API,并比较返回结果,若完全相同,则认为是完整的。这种方法不可靠(多次调用本来就有可能返回不同的业务结果),增加了ISV开发成本,也加重了TOP的服务器压力。
解决方案:
为了解决开发者反馈的ISV校验数据完整性的问题,TOP已经在HTTP Header中加入一个新的元素:top-bodylength。
使用方法:开发者取到这个top-bodylength的值,计算一下收到的HTTP Body长度,如果两者相等,则说明返回的数据是完整的,如果计算出来HTTP Body的长度小于top-bodylength的值,说明发生了丢包。
注:
① TOP没有改HTTP Body,所以,不会对已有应用造成任何影响。
② top-bodylength是表示HTTP Body的个String字符长度(不区分中文英文,都算作1个长度)。
1.目前开发者调用API可能出现的错误有三类:API平台错误、ISV业务错误和容器类错误。下面介绍一下和ISV成功率有关的名词说明:
有效访问量=成功访问量+ISV业务错误 (成功访问指的是正常获取到数据并且无报错的调用)
ISV成功率=成功访问量/有效访问量
连接淘宝服务器错误主要是http连接错误或者连接被重置被拒绝等,这类错误是开发者访问淘宝服务器出现的问题,请直接联系服务器管理员或通过网络搜索答案。
API平台错误是主要包含两类错误:
(1)错误码小于100(不包含15,40,41错误码)的调用错误,这种错误一般是由于用户的请求不符合各种基本校验而引起的。用户遇到这些错误的返回首先检查应用的权限、频率等情况,然后参照文档检验一下传入的参数是否完整且合法。
(2)子错误码(sub_code)是"isp."开头的调用错误,这种错误一般是由于服务端异常引起的。用户遇到这类错误需要隔一段时间再重试就可以解决。
错误码 |
错误描述-英文 |
错误描述-中文 |
解决方案 |
3 |
Upload Fail |
图片上传失败 |
将传入的图片格式改为正确格式、适当的大小的图片放进消息体里面传输过来,如果传输仍然失败需要减小图片大小或者增加网络带宽进行尝试 |
7 |
App Call Limited |
应用调用次数超限,包含调用频率超限 |
调整程序合理调用API,等限频时间过了再调用,具体可以点击查看 |
9 |
Http Action Not Allowed |
HTTP方法被禁止 |
请用大写的POST或GET,如果有图片等信息传入则一定要用POST才可以 |
10 |
Service Currently Unavailable |
服务不可用 |
多数是由未知异常引起的,仔细检查传入的参数是否符合文档描述。 |
11 |
Insufficient ISV Permissions |
开发者权限不足 |
子错误码目前有 isv.permission-api-package-empty 没有和任何访问包关联,建议根据业务规则申请对应的权限 isv.permission-api-package-not-allowed 不允许访问不可访问组的API,建议检查一下自己申请的应用标签是否正确,如果确实需要访问不可访问组的API需要根据业务规则到对应的业务线申请权限 例如:买家不可访问组就会有一些订单API不允许买家应用访问 isv.permission-api-package-limit 关联的包中不允许访问该API,建议根据业务规则申请对应的权限 isv.permission-ip-whitelist-limit IP限制不允许访问,建议到安全中心配置正确的IP白名单 isv.permission-api-widget-only-limit 仅允许widget(组件)方式访问 |
12 |
Insufficient User Permissions |
用户权限不足 |
应用没有权限调用增值权限的接口,可在淘宝合作伙伴后台提交权限申请 |
13 |
Insufficient Partner Permissions |
合作伙伴权限不足 |
应用没有权限调用增值权限的接口,可在淘宝合作伙伴后台提交权限申请 |
15 |
Remote service error |
远程服务错误 |
远程服务错误,如果是TOP接口请咨询对接的小二,如果是奇门接口请咨询服务提供方,具体可以在支持中心提交问题 |
21 |
Missing Method |
缺少方法名参数 |
传入的参数加入method字段 |
22 |
Invalid Method |
不存在的方法名 |
传入的method字段必需是你所调用的API的名称,并且该API是确实存在的 |
23 |
Invalid Format |
无效数据格式 |
传入的format必需为json或xml中的一种 |
24 |
Missing Signature |
缺少签名参数 |
传入的参数中必需包含sign字段 |
25 |
Invalid Signature |
无效签名 |
签名必需根据正确的算法算出来的。算法请见:查看 |
26 |
Missing Session |
缺少SessionKey参数 |
传入的参数中必需包含session字段 |
27 |
Invalid Session、 unmix-sessionkey-failure |
无效的SessionKey参数 |
传入的session必需是用户绑定session拿到的,如果报session不合法可能是用户没有绑定session或session过期造成的,用户需要重新授权一下然后传入新的sessionKey |
28 |
Missing App Key |
缺少AppKey参数 |
传入的参数必需包含app_key字段 |
29 |
Invalid App Key |
无效的AppKey参数 |
应用所处的环境跟选择的环境不一致,例如:应用处于沙箱测试环境,却选择在正式环境进行测试。 |
30 |
Missing Timestamp |
缺少时间戳参数 |
传入的参数中必需包含timestamp参数 |
31 |
Invalid Timestamp |
非法的时间戳参数 |
时间戳,格式为yyyy-mm-dd hh:mm:ss,例如:2008-01-25 20:23:30。淘宝API服务端允许客户端请求时间误差为10分钟 |
32 |
Missing Version |
缺少版本参数 |
传入的参数中必需包含v字段 |
33 |
Invalid Version |
非法的版本参数 |
用户传入的版本号格式错误,必需为数字格式 |
34 |
Unsupported Version |
不支持的版本号 |
用户传入的版本号没有被提供 |
42 |
Insufficient session permissions |
短授权权限不足 |
调用的是高危API,请参考安全等级文档。 |
43 |
Parameter Error |
参数错误 |
一般是用户传入参数非法引起的,请仔细检查入参格式、范围是否一一对应 |
44 |
Invalid access token |
无效的access token |
一般是用户使用top协议获取的sessionkey当做access token通过https方式调用API或调用环境搞错 |
47 |
Invalid encoding |
编码错误 |
一般是用户做http请求的时候没有用UTF-8编码请求造成的 |
子错误码格式 |
错误信息 |
归属方 |
是否可在程序中重试 |
isp.***-service-unavailable |
调用后端服务***抛异常,服务不可用 |
ISP |
是 |
isp.remote-service-error |
连接远程服务错误 |
ISP |
是 |
isp.remote-service-timeout |
连接远程服务超时 |
ISP |
是 |
isp.remote-connection-error |
远程连接错误 |
ISP |
是 |
isp.null-pointer-exception |
空指针异常错误 |
ISP |
否 |
isp.top-parse-error |
api解析错误(出现了未被明确控制的异常信息) |
ISP |
否 |
isp.top-remote-connection-timeout |
top平台连接后端服务超时 |
ISP |
是 |
isp.top-remote-connection-error |
top平台连接后端服务错误,找不到服务 |
ISP |
是 |
isp.top-mapping-parse-error |
top-mapping转换出错,主要是由于传入参数格式不对 |
ISP |
否 |
isp.unknown-error |
top平台连接后端服务抛未知异常信息 |
ISP |
是 |
1)ISV业务级错误是ISV传入的参数缺失,有误或格式错误等原因造成的错误。因此isv应该根据错误信息检验是否传入了相应的信息,对于这一类错误建议改正后再重试。
主要包含两类:
① 错误码为40,41的错误;40主要是必填参数没有传入报错,41主要是传入的参数格式不对报错。
② 错误码大于100或者等于15且子错误码(sub_code)是"isv."开头【( 错误码 > 100 or 错误码 = 15 ) and (isv开头)】的调用错误。
2)错误响应是用户和服务器交互失败的最直接展示,isv在调用top服务时,如果调用失败,请尽量保留下错误日志以便进行后面的错误追查。
3) 40/41错误介绍
错误码 |
错误描述-英文 |
错误描述-中文 |
解决方案 |
40 |
Missing Required Arguments |
缺少必选参数 |
API文档中设置为必选的参数是必传的,请仔细核对文档 |
41 |
Invalid Arguments |
非法的参数 |
参数类型不对,例如:需要传入的是数字类型的,却传入了字符类型的参数 |
4)业务级子错误
子错误码格式 |
错误信息 |
归属方 |
是否可在程序中重试 |
isv.###-not-exist:*** |
根据***查询不到### |
ISV |
否 |
isv.missing-parameter:*** |
缺少必要的参数*** |
ISV |
否 |
isv.invalid-paramete:*** |
参数***无效,格式不对、非法值、越界等 |
ISV |
否 |
isv.invalid-permission |
权限不够、非法访问 |
ISV |
否 |
isv.parameters-mismatch:***-and-### |
传入的参数***和###不匹配,两者有一定的对应关系 |
ISV |
否 |
isv.***-service-error:### |
调用***服务返回false,业务逻辑错误,###表示具体的错误信息 |
ISV |
否 |
错误码 |
英文描述 |
中文描述 |
解决方案 |
53 |
Insufficient security level |
安全等级不足 |
提高应用安全等级或刷新授权安全等级 |
子错误码信息 |
中文描述 |
归属方 |
解决方案 |
high-risk security breach |
存在高危安全漏洞 |
ISV |
解决安全漏洞后重新发布 |
mid-risk security breach |
存在中级安全漏洞 |
ISV |
解决安全漏洞后重新发布 |
R1 security authorize missing |
未进行R1级别授权 |
||
R1 security authorize invalid |
R1级别授权过期 |
ISV |
进行R1级别授权(用户重新授权或刷新授权) |
R2 security authorize missing |
未进行R2级别授权 |
ISV |
进行R2级别授权(用户重新授权或刷新授权) |
R2 security authorize invalid |
R2级别授权过期 |
ISV |
进行R2级别授权(用户重新授权或刷新授权) |
W1 security authorize missing |
未进行W1级别授权 |
ISV |
进行W1级别授权(用户重新授权或刷新授权) |
W1 security authorize invalid |
W1级别授权过期 |
ISV |
进行W1级别授权(用户重新授权或刷新授权) |
W2 security authorize invalid |
未进行W2级别授权 |
ISV |
进行W2级别授权(用户重新授权或刷新授权) |
W2 security authorize invalid |
W2级别授权过期 |
ISV |
进行W2级别授权(用户重新授权或刷新授权) |
错误码 |
错误码描述 |
801 |
APP请求所带的参数错误,一般是缺失必要参数 |
802 |
如果协议要求签名,签名错误 |
803 |
时间戳校验不过,和服务端时间差距不能超过5分钟 |