亚马逊MWS API:我们下载订单时缺少一些订单

时间:2015-04-06 21:41:10

标签: java amazon-mws

我已经实施了一个系统来下载亚马逊卖家的订单。系统的工作方式如下:

  • 我们开始想要从中午12:00到下午2:00下载订单,所以我告诉亚马逊(通过他们的Java客户端):“从12:02到2:00给我所有订单(两分钟的时差是以适应亚马逊在其API中所描述的挂单。
  • 我们完全下载这些订单:如果有超过一百个我们使用下一个令牌,一旦我们拥有它们,我们就会对每个订单使用listOrderItems操作来获取订单项。

其中一些订单待定,如果是,我们将它们存储在我们的数据库中,并在下次检查它们是否可以下载。我们的下一个工作将在接下来的两个小时间隔内运行,要求所有订单从2:00到3:58。

此操作运行正常,但我们的客户开始报告他们的订单丢失。显然,时不时的订单会滑过众所周知的裂缝,我们不确定为什么。为了解决这个问题,我们设置了30分钟的重叠时间,这样每次下载订单时我们都会看到过去30分钟。除了下载冗余订单的代价之外,我们还要检查数据库以查看订单是否已经处理过,因此它会减慢速度。

在伤口擦盐,仍然没有解决问题!它不会经常发生,但平均每天有0-4个订单丢失。

1 个答案:

答案 0 :(得分:3)

通过ListOrders获取订单似乎有很多陷阱。

以下是来自MWS support staff

的回复
  

请注意,订单仅填充在ListOrders数据中   当它已经清除了一些内部检查(主要是为了欺诈   命令)。这意味着订单之间会有延迟   已创建,当它出现在API查询中时(或在SellerCentral中,   对于这个问题)。这种延迟通常是几分钟,偶尔   半小时,而且很少是多个小时

     

有些订单可以从待处理状态转移到未处理状态   不久。订单ID ---仅处于挂起状态7秒   您提出的所有要求都是在此订单开始之前   实际上可用于填充ListOrders的API。甚至是   订单---处于挂起状态17秒,你做了   之前的要求。收到电子邮件通知后,他们就会收到   不再处于待定状态。

由于您按创建日期选择订单,因此您可能很容易错过已创建的订单,但尚未通过待处理状态。

根据我的经验,获得所有订单的可靠方法是致电GetReportList,询问尚未得到承认的所有_GET_ORDERS_DATA_报告 - 然后确认您已经确认的报告。已存储在您的系统中。 "已确认"亚马逊系统中的标志使两个系统保持同步。这个解决方案的优点在于您不必担心时间戳。