亚马逊MWS API:当我们下载订单时,一些订单丢失



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

  • 我们一开始想从中午12:00到下午2:00下载订单,所以我告诉亚马逊(通过他们的Java客户端):"给我从12:02到2:00的所有订单(两分钟的时间差是为了适应亚马逊在API中描述的待处理订单)
  • 我们完全下载这些订单:如果订单超过100个,我们将使用下一个令牌,一旦我们拥有了所有订单,我们将对每个订单使用listOrderItems操作来获取行项目

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

这项操作运行良好,但我们的客户开始报告他们的订单丢失。显然,不时会有一个订单从众所周知的裂缝中溜走,我们不知道为什么。为了解决这个问题,我们设置了30分钟的重叠时间,这样每次下载订单时,我们都会看到过去的30分钟。除了下载多余订单的惩罚外,我们还必须检查数据库,看看订单是否已经处理完毕,这样会大大降低速度。

在伤口上擦盐,仍然没有解决问题!这种情况并不常见,但平均每天会有0-4个订单丢失。

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

以下是MWS支持人员的回应

请注意,订单仅填充在ListOrders数据中当它清除了一些内部检查(主要是针对欺诈订单)。这意味着在订单并且当它出现在API查询中时(或者在SellerCentral中,为此)。这种延迟通常是几分钟,偶尔也会半小时,并且很少是多个小时

有些订单可以很快从挂起状态变为未发货状态很快订单id---处于挂起状态仅7秒并且您提出的所有请求都是在该订单到期之前实际上可供API在ListOrders中填充。甚至订单---处于挂起状态17秒,而您在此之前的请求。一旦你收到电子邮件通知,他们不再处于挂起状态。

由于您是根据创建日期来选择订单的,因此您可能很容易错过已创建但尚未通过挂起状态的订单。

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

最新更新