2015-04-06 106 views
4

我已經實施了一個系統來下載亞馬遜賣家的訂單。該系統的工作原理是這樣的:亞馬遜MWS API:我們下載訂單時缺少一些訂單

  • 我們開始想從下午12:00下載訂單 - 下午2:00,所以我告訴亞馬遜(通過他們的Java客戶端):「給我所有的訂單從12:02到2 :00(兩分鐘的時間差是爲了適應亞馬遜在其API中描述的掛單)
  • 我們完全下載這些訂單:如果有超過一百個,我們使用下一個標記,一旦我們擁有它們全部我們對每個訂單使用listOrderItems操作來獲取訂單項

其中一些訂單正在等待處理,如果是,我們將它們存儲在我們的數據庫中並檢查它們是否爲nex看看他們是否準備好下載。我們的下一份工作將在接下來的兩個小時內完成,要求所有訂單從2點到3點58分。

此操作運行正常,但我們的客戶開始報告缺失訂單。顯然,每隔一段時間,一個訂單就會滑過這個衆所周知的裂縫,我們不知道爲什麼。爲了解決這個問題,我們設置了30分鐘的重疊時間,以便每次下載訂單時,我們都會在過去30分鐘內查看。除了下載冗餘訂單的懲罰之外,我們必須檢查數據庫以查看訂單是否已經處理完畢,所以它會減慢相當多的事情。

and在傷口擦鹽,它仍然還沒有解決問題!這種情況並不常見,但平均每天缺貨0-4份。

+0

你的應用程序調用MWS ListOrders完全使用哪些參數?您可以選擇「LastUpdatedAfter/Before」和「CreatedAfter/Before」。順便說一句,我沒有看到掛單如何需要「兩分鐘的時間差」,因爲他們可以待在幾天的狀態? – Hazzit

+0

我們在 – IcedDante

回答

3

通過ListOrders獲取訂單似乎有一些陷阱。

以下是MWS support staff的響應,

請注意,爲了在ListOrders數據 只填入當它清除了一些內部的檢查(大多爲欺詐 訂單)。這意味着在創建訂單 之間以及在API查詢中顯示(或者在SellerCentral中, 中)之間會有延遲。這種延遲通常是幾分鐘,偶爾會有 半小時,而很少會有多個小時

而且一些訂單可以從非常 很快掛起狀態未發貨狀態移動。訂單ID ---是一直處於掛起狀態只持續7秒 和所有你提出的要求是這個順序是 實際可用的API在ListOrders來填充時間之前。甚至 秩序---是未決的17秒的狀態和你之前做的 請求。一旦收到電子郵件通知,他們就是 不再處於未決狀態。

既然你被他們創建日期選擇訂單,你可以很容易錯過創建的訂單,而沒有通過暫停狀態。

根據我的經驗,獲取所有訂單的可靠方法是致電GetReportList,要求所有_GET_ORDERS_DATA_尚未得到確認的報告 - 然後確認您存儲在系統中的報告。亞馬遜系統中的「已確認」標誌使兩個系統保持同步。這個解決方案的優點是你不必擔心時間戳。

+0

之前/之後使用** Created **該解決方案唯一的缺點是訂單不能按需提供。我認爲這兩個API調用的混合是最好的方法。感謝所有偉大的信息 – IcedDante

+0

@IcedD​​ante可能是我遲到了請求你,但似乎我陷入了與你一樣的情況......你能指導我解決你的問題嗎? –