最近有不少分销商反映,订单增量接口(hotel.incr.order)无法获取到订单增量信息,这个问题有以下几个原因。
-
1. 之前有段时间因为订单增量过多,分销系统不再吐出不是通过API渠道创建的订单的增量,后来在2018-09-13加入了从PC跳转和H5跳转的订单增量,至于电话下单等其他渠道的订单增量不再吐出。
-
2. 同样因为订单增量过多,为了保证服务稳定性,艺龙API接口的订单增量只会保留最近的3个小时内的增量,如果分销商3小时内没有订单增量的请求,亦或者3小时内没有产生新的订单增量,有可能会出现之后一直无法获取到订单增量的情况。
对于第一种原因,艺龙侧分销API接口不再提供解决方案,第二种情况的解决方案如下。
-
1. 当系统运行中,超过3小时没有获取到订单增量时,调用hotel.incr.id接口,传入当前时间减去2.5小时(java代码示例:System.currentTimeMillis() - 150 * 60000),获取到当前时间前2.5小时时的订单增量LastId,至于为什么不传入当前时间减去3小时,是为了保证hotel.incr.id一定可以获取到有效的LastId,如果传入当前时间减去3小时,可能请求到艺龙这里已经丢弃了三小时前那个时间点的增量,导致还是无法获取到有效的LastId。
-
2. 当获取到最新的订单增量LastId后,使用这个LastId调用hotel.incr.order接口,并且取出接口返回的增量列表中最后一个节点,使用那个LastId最为下一次hotel.incr.order接口的入参,而不再调用hotel.incr.id接口。如果接口返回的增量列表节点数量为0,即没有返回订单增量,那么依然用上次调用hotel.incr.orderJ接口的LastId作为入参,再次调用hotel.incr.order接口。如果超过3小时未获取到增量,那么执行1中的操作。
以上是订单增量接口出现问题的解决方案,如果想要了解更多关于增量接口的原理或者其他信息,请参考对应的增量接口文档以及艺龙开放API离线数据模式接入说明中的第四节。