幾個在調用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"。