几个在调用API时常见问题的解决方案 抛砖引玉,你们也能够说说本身在开发中累积的解决常见问题的方案。谢谢! 场景一:在售商品库存更新 使用的API: taobao.items.get taobao.items.search taobao.items.onsale.get taobao.items.inventory.get 业务逻辑细节: 出现isv.invalid-parameter:gain-number-too-large(搜索商品超过10万条)报错,会形成一些流量浪费掉 解决方案: 业务方面:因为淘宝为了不翻页超过10万条对服务器压力过大,在搜索商品超过10万条之后就没法在淘宝页面显示。 程序方面:程序前端使用page_no*page_size>=100000的判断,在客户端校验,避免这些错误操做形成调用量浪费 场景二:添加优惠策略 使用的API: taobao.marketing.promotion.add 业务逻辑细节: 在调用Promotion.Add添加优惠策略的时候,注意要防止对同一商品对同一标签的人群,设置多个优惠策略。(isv.promotion-repeat) 解决方案: 商家可能会使用多个工具设置优惠策略,可能会出现不一样应用设置了重复策略的状况,不要进行重试,要提醒用户删除上个优惠策略。 场景三:橱窗推荐类工具 使用的API: taobao.item.recommend.add 业务逻辑细节: 出现isv.item-recommend-service-error:ERROR_MORE_THAN_ALLOWED_RECOMMEND_NUM 橱窗已满的错误 解决方案: 在橱窗上增长一个商品,采用的逻辑应该是:调用taobao.shop.remainshowcase.get 得到橱窗数量,再去add。 好比:调用get获得返回值6,说明有6个空的橱窗,而后调用6次add,向空的橱窗中添加推荐商品。 在遇到用户使用多款应用致使,橱窗在非正常状况下变满,应提示卖家,橱窗已满,不该该反复重试。不推荐,先去add,返回错误后中止的调用逻辑。 场景四:自动发货(修改订单状态)类工具 使用的API: taobao.logistics.offline.send 业务逻辑细节1: 调用时40NULL缺乏参数的错误 解决方案: tid,out_id,company_code均为必选参数,须要传入。当物流公司是非官方合做公司时,company_code填写“其余” 业务逻辑细节2: B98错误发货类型不正确。将货到付款,在线物流等订单,使用了线下物流发货 解决方案: 经过trade.fullinfo.get接口获取到订单的发货类型,作判断后,调用发货接口 场景五:订单查询 使用的API: taobao.trade.fullinfo.get 业务逻辑细节1: 出现isv.trade-not-exist订单不存在错误,缘由通常是查询了3个月前的订单 解决方案: 天天对数据库进行更新,剔除掉时间超过3个月的订单。或者在调用接口前对订单modified进行校验,剔除过时的并加上标签,之后不对这些订单进行查询。 业务逻辑细节2: isv.invalid-permission错误,使用了错误的卖家Id去查询订单,通常出如今支持多店管理的进销存应用中,从服务器中获取订单没有区分不一样的淘宝店铺,在 作下一步详细信息查询时,会出现权限错误。 解决方案: 从服务器获取不一样店铺的订单时,要作好标签,区分不一样店铺。在作后续操做时,按店铺分开处理。 场景六:批量评价 使用的API: taobao.traderate.list.add 业务逻辑细节: 出现isv.rate-service-error:-1020错误,超过15天的订单已评价或已过评价有效期。没有对订单的评价时间作一个15天限制 解决方案: 加一个15天的有效期限制,也就是只对交易成功以后15天之内未评价的订单进行评价 场景七:订单增量查询 使用的API: taobao.trades.sold.increment.get 业务逻辑细节: 出现订单查询不到,漏单的问题 解决方案: 注意点1:使用该接口查询时,要根据modified字段来查询,例如一笔订单85433811901845 <end_time>2011-07-20 10:00:27</end_time> <modified>2011-07-20 10:17:30</modified><pay_time>2011-07-18 10:46:17</pay_time> 那么查询时查询区间要包含modified:2011-07-20 10:17:30, 便可以设置start_modified 2011-07-20 10:15:00 end_modified: 2011-07-20 10:45:00。2:只能查询时间跨度为一天的增量交易记录: start_modified:2011-7-1 16:00:00 end_modified: 2011-7-2 15:59:59(注意不能写成16:00:00)。 场景八:手机充值类业务 使用的API: taobao.trades.sold.increment.get taobao.logistics.offline.send 业务逻辑细节: 出现isv.logistics-offline-service-error:B04错误,订单状态不对,多数为订单重复发货。为了保证不漏单,get的订单获取区间可能有所重复。 当send接口出现一些延时时,重复区间的订单可能获取重复再次发货,致使重复。 解决方案: 调用get接口时,作一个延时,保证订单已经彻底send后,再调用taobao.trades.sold.increment.get接口。 场景九:图书发货 使用的API: taobao.products.search taobao.item.get taobao.item.add taobao.item.delete 业务逻辑细节: 在添加或修改图书时会出现isv.item-add-service-error:CATEGORY_LIMIT_SPU_BOOK_NORMAL\isv.item-delete-service-error\isv.item-is-delete: invalid-numIid-or-iid错误,主要缘由是添加或是修改的图书ISBN号没有通过审核,在淘宝产品库中不存在。 解决方案: 在添加或是修改图书类商品时,首先要调用taobao.products.search接口查询,图书是否在产品库中。在调用products.search接口时:输入的q字 段参数为“ISBN号” 例如:"9787121105777"。status字段输入参数分为两类:一、普通卖家输入字段为"3" ;二、商城卖家输入字段为"0,3"。