订单同步 更新时间:2016-04-07 

背景

订单是卖家的核心数据,卖家的很多日常工作都是围绕着订单展开,应用的基本功能就是要保证订单实时、完整的展示在卖家面前。由于API请求依赖于网络,存在着网络不稳定和同步时间长的问题,所以应用必须把千米电商云的订单数据同步到本地。如何才能快速、完整的把订单同步到本地是本方案将要讨论的问题。
订单同步方式:通过api 同步,本文主要分析使用api 同步订单的场景.

名词解释

在线订单:获取卖家三个月内已卖出的云订货、云商城订单。

增量订单:相对于已经同步到本地工具软件中的订单,凡是在千米电商云中发生了变更的订单就是增量订单。

消息服务:一种实时获取订单变更的消息通知服务。

相关API

API名称 描述
qianmi.cloudshop.trades.sold.get 初始化同步:查询三个月内卖家在电商云中所有已卖出的订单(包含云订货和云商城所有订单)
qianmi.cloudshop.d2c.trades.sold.get 初始化同步:获取三个月内卖家在云商城(D2C)已卖出的订单(销售渠道仅云商城)
qianmi.cloudshop.d2p.trades.sold.get 初始化同步:获取三个月内卖家在云订货(D2P)已卖出的订单(销售渠道仅云订货)
qianmi.cloudshop.d2c.trades.sold.incrementv.get 增量同步:查询云商城(D2C)增量交易数据(根据入库时间)
qianmi.cloudshop.d2p.trades.sold.incrementv.get 增量同步:查询云订货(D2P)增量交易数据(根据入库时间)
qianmi.cloudshop.d2c.trades.sold.increment.get 增量同步:查询云商城(D2C)增量交易数据(根据修改时间)
qianmi.cloudshop.d2p.trades.sold.increment.get 增量同步:查询云订货(D2P)增量交易数据(根据修改时间)

同步方案

订单同步主要分为初始化和增量获取两个步骤:

1. 初始化是把3个月内的在线订单全部同步回来,这个需要较长的时间;

2. 增量获取则是把淘宝发生了变更的订单同步回来,这个一般需要较短的时间。

下面的方案都会围绕着如何初始化和增量获取来讲。

方案一

同步流程:

核心步骤:

  • 注意云订货和云商城的订单区别,单销售渠道(只云订货或云商城)接入建议调用各销售渠道的专用同步接口
  • 增量同步接口分为按创建时间或者修改时间来获取增量订单,区别在于创建时间的只包括新生产的订单,修改时间的包括了新生产的订单和已经发生变更的订单

适应范围:

适用于ISV测试订单同步功能或生产环境的中小卖家进行订单同步。此方案比较低效,不推荐大家使用,建议采用下面的方案。

方案二

同步流程:

核心步骤:

  • 初始化同步跟方案一是一样的,初始同步3个月内的订单数据.
  • 注意云订货和云商城的订单区别,单销售渠道(只云订货或云商城)接入建议调用各销售渠道的专用同步接口
  • 增量同步:通过消息服务实时监听订单变更消息,在通过qianmi.cloudshop.trade.fullinfo.get接口获取单笔订单详情

适应范围:

适用所有类型的商家。此方案效率非常高,推荐所有ISV采用。

注意事项

漏单问题:

  • 增量按入库时间同步的时候,返回结果是根据订单创建时间倒叙排列的,分页必须从后往前翻页,防止在正向翻页的时候订单发生变更而导致漏单.
  • 增量按修改时间同步的时候,返回结果是根据订单最后修改时间倒叙排列的,分页必须从后往前翻页,防止在正向翻页的时候订单发生变更而导致漏单.
  • 注意订单的销售渠道类型(云订货、云商城),以免因为销售渠道同步错误而导致漏单.

性能问题:

  • 如果不需要返回全部字段,建议请按需返回,传入需要返回的订单字段数据.
  • 初始化同步的时候由于订单量比较大,建议把3个月的时间拆分成按天获取,减少单次请求对千米后台数据库的记录的扫描量,以提升接口效率.