项目背景
最近做一个电子商务平台的投标工作,写技术标过程中,配到客户一些和淘宝集成的接口,其中有一个需求就是需要将目前ERP系统中的定的那和淘宝店铺中订单进行同步,具体需求如下描述:
1、零售、批销、代销、机构订单都存储在客户的ERP系统当中;
2、淘宝商城的订单存储在淘宝中,ERP系统中不存在;
3、目前投标的电子商务平台中商品订单付款成功后需要将订单转入到ERP系统处理。
针对以上需求,我们对淘宝的开放平台接口做了分析,其中淘宝已经提供类似场景的解决方案,具体的方案将在下面做具体的介绍。

淘宝解决方案背景说明
订单是卖家的核心数据,卖家的很多日常工作都是围绕着订单展开,应用的基本功能就是要保证订单实时、完整的展示在卖家面前。由于API请求依赖于网络,存在着网络不稳定和同步时间长的问题,所以应用必须把淘宝的订单数据同步到本地。如何才能快速、完整的把订单同步到本地是本方案将要讨论的问题。

名词解释
在线订单:卖家三个月内已卖出的订单。
增量订单:相对已经同步到本地的订单,凡是在淘宝上发生了变更的订单就是增量订单。
主动通知:一种通过HTTP长连接实时向客户端(应用)推送数据(交易)变更的渠道。
异步API:把业务请求与业务处理分开执行、把业务逻辑与海量计算转移到淘宝、并且结果可异步下载的API。

API介绍
taobao.trades.sold.get
获取三个月内已卖出的在线订单,适用于用户初始化的时候使用,ISV不应该用此接口来获取增量订单。
不建议使用或尽量少用此接口。
taobao.trades.sold.increment.get
获取增量订单,适用于用户初始化后,增量同步发生变更的订单,ISV不应该用此接口来获取三个月内的订单。
taobao.topats.trades.sold.get
异步获取三个月内已卖出的在线订单,具有简单、高效、准确的特点,并且支持超大卖家,适用于用户初始化的时候使用,强烈建议采用此接口代替taobao.trades.sold.get接口,以提升效率、降低开发成本。
taobao.trade.fullinfo.get – 获取单笔订单详情。
taobao.topats.trades.fullinfo.get – 批量获取最多100笔订单详情。

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

  1. 初始化是把3个月内的在线订单全部同步回来,这个需要较长的时间;
  2. 增量获取则是把淘宝发生了变更的订单同步回来,这个一般需要较短的时间。
    下面的方案都会围绕着如何初始化和增量获取来讲。
    方案一
    同步流程:
    淘宝订单同步解决方案一同步流程
    核心步骤:
    淘宝订单同步解决方案一核心步骤
    1、三个月数据:通过taobao.trades.sold.get获取3个月内到现在创建的订单ID,再通过taobao.trade.fullinfo.get获取订单详情
    2、增量数据:通过taobao.trades.sold.increment.get获取从现在开始的增量订单ID,再通过taobao.trade.fullinfo.get获取订单详情
    适用范围:
    适用于ISV测试订单同步功能或生产环境的中小卖家进行订单同步。此方案比较低效,除非老的应用更新成本很高,否则不推荐大家使用,建议采用下面的方案。
    方案二
    同步流程:
    淘宝订单同步解决方案二同步流程
    核心步骤:
    淘宝订单同步解决方案二核心步骤
    1、三个月数据:通过taobao.topats.trades.sold.get异步获取3个月内到昨天23:59:59创建的订单详情
    2、增量数据:通过taobao.trades.sold.increment.get获取从今天00:00:00开始的增量订单ID,再通过taobao.trade.fullinfo.get获取订单详情。
    适用范围:
    适用于所有类型的卖家,尤其是大卖家采用此方案可以极大的提高同步速度,对于超大型的卖家(如直充、金冠级别的卖家)也能很好的支持。
    方案三
    同步流程:
    淘宝订单同步解决方案三同步流程
    核心步骤:
    淘宝订单同步解决方案三核心步骤
    1、三个月数据:
    a) 首先,通过taobao.topats.trades.sold.get异步获取3个月内到昨天23:59:59创建的订单详情
    b) 然后,通过taobao.trades.sold.increment.get获取从今天00:00:00到现在的增量订单ID,再通过taobao.trade.fullinfo.get获取订单详情
    2、增量数据:通过主动通知客户端实时监听订单变更消息,再通过taobao.trade.fullinfo.get获取订单详情
    适用范围:
    适用于所有类型的卖家,是所有方案中相对复杂,但效率最高的方案,推荐所有ISV采用。

经验分享
漏单问题:
1、通过taobao.trades.sold.get和taobao.trades.sold.increment.get获取订单时,交易类型type入参默认只查询部分类型的订单,要查询所有类型的订单,必须显式提供所有交易类型作为type入参。
2、通过taobao.trades.sold.increment.get获取增量订单时,返回结果是按订单修改时间倒序排序的,分页必须从后往前翻,防止正向翻页过程中订单发生变更而导致漏单。
3、通过taobao.trades.sold.increment.get获取增量订单时,每次获取的起始时间适当前移10分钟左右(双11大促时建议前移30分钟左右),防止极端情况下由于淘宝系统压力而导致订单延迟更新到数据库而产生的漏单。
4、通过主动通知接收订单变更消息时,需要处理服务器重启或网络断开连接而导致的消息丢失问题,详细内容请查看主动通知文档。
性能问题:
1、taobao.trades.sold.get获取三个月已卖家的订单
a) 采用入参use_has_next=true的分页方式可以避免每次API请求对淘宝数据库产生的count(),从而显著提升速度和稳定性。
b) 由于获取三个月内的订单接口是用创建时间过滤的,而创建时间是不可变的,所以从前往后翻页也不会导致漏单,因而可以省掉第一步的count(
),而直接采用入参use_has_next=true的方式分页获取,直到返回结果中has_next=false时终止翻页。
c) 如果接口返回的字段无法满足应用的需要,则强烈建议只获取fields=tid这一个字段,然后再通过taobao.trade.fullinfo.get获取订单详情。
d) 由于卖家三个月订单量比较大,建议把三个月的订单切分成按天获取,减少单次请求对淘宝数据库的记录扫描量,以提升效率。
2、taobao.trades.sold.increment.get获取增量订单
a) 采用入参use_has_next=true的分页方式可以避免每次API请求时对淘宝数据库产生的count(*),从而显著提升速度和稳定性。
b) 由于获取增量订单接口是用修改时间过滤的,而修改时间是可变的,所以需要从后往前翻页才能避免漏单。从后往前翻页必须要知道最后一页,所以必须在首次API请求时采用use_has_next=false方式统计订单总数,计算出总页数,然后再设置use_has_next=true终止订单统计,从后往前翻页。
c) 如果接口返回的字段无法满足应用的需要,则强烈建议只获取fields=tid这一个字段,然后再通过taobao.trade.fullinfo.get获取订单详情。
3、使用taobao.trades.sold.get/taobao.trades.sold.increment.get只获取tid字段时,建议设置page_size为最大值,减少API请求次数,提升效率。获取多个字段时可根据自身的网络情况设置page_size,建议设置为50左右。
异常处理:
1、同步订单一般会采用多线程处理,由于API请求对APP是有频率限制的,所以设置线程池大小时,需要根据TOP允许的API调用频率来设置,避免限流后导致应用长时间无法调用API。
2、对于API返回的ISP类型的错误或网络连接错误,应用线程应该在休眠片刻中自动重试。而对于API返回的ISV类型的错误,应用需要记录日志以便日后排查,同时不要重试。

淘宝订单API-获取订单详情接口应用相关推荐

  1. 淘宝客订单API获取订单代码

    Trade 数据结构 名称 类型 是否隐私 描述 seller_nick String Y 卖家昵称 buyer_nick String Y 买家昵称 title String Y 商品标题 type ...

  2. 外卖cps淘宝客订单API获取订单代码

    直到看到了一个好友分享到外卖 CPS,觉得这是一个机会,不仅任何地方都可以做,而且门槛相对较低. 外卖cps淘宝客订单API获取订单代码 外卖cps带分销返利源码 源代码地址 http://www.m ...

  3. 托众导购网 淘宝客订单API获取订单代码

    本文介绍如何使用淘宝客API获取淘宝客订单 ,获取到订单后 ,将订单记录插入到 OenJWeb的淘宝客订单表 ,下面 是代码 : package org.openjweb.core.taobao.se ...

  4. 淘宝订单API获取订单代码说明

    点击免费测试 Trade 数据结构 名称 类型 是否隐私 描述 seller_nick String Y 卖家昵称 buyer_nick String Y 买家昵称 title String Y 商品 ...

  5. 淘宝天猫1688拼多多京东电商API获取商品详情接口,参数汇总

    商品详情列表API接口列表 item_get-获得淘宝商品详情 item_get-获得1688商品详情 item_get-获得JD商品详情 item_get-获得拼多多商品详情 item_get-获得 ...

  6. 淘宝客api 更新订单规则

    欢迎大家访问我的博客 blog.ayla1688.cool 淘宝客订单查询接口,在更新后需要先申请 使用渠道管理/会员运营管理.  审核期为一周,一般每周三能够知道结果. 新api 接口如下 taob ...

  7. 淘宝天猫API_获取商品详情原数据

    item_get_app-获得淘宝app商品详情原数据 获取key和secret API返回结果 {     "item": {         "apiStack&qu ...

  8. 电商API大全、1688、淘宝天猫APP端商品详情接口调用展示

    由于篇幅有限,本帖只展示部分代码.接口,需要全部参数以及了解更多API调试请移步注册API账号 http://console.open.onebound.cn/console/?i=Rookie { ...

  9. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )、淘宝店铺卖出订单详情接口,店铺订单明文接口,店铺订单解密接口,店铺订单消息推送接口

    taobao.trade.fullinfo.get( 获取单笔交易的详细信息 ),淘宝店铺卖出订单详情接口,对接该接口可用于获取淘宝店铺订单详情信息,包括卖出订单详情,买家姓名,买家电话,买家收货地址 ...

  10. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )、淘宝店铺卖出订单详情接口,淘宝店铺订单明文接口,淘宝店铺订单解密接口

    taobao.trade.fullinfo.get( 获取单笔交易的详细信息 ),淘宝店铺卖出订单详情接口,对接该接口可用于获取淘宝店铺订单详情信息,包括卖出订单详情,买家姓名,买家电话,买家收货地址 ...

最新文章

  1. @Component、@Repository、@Service、@Controller区别
  2. (收藏)Wp7开发中文网站
  3. 2022年美国大学生数学建模竞赛O奖流程图
  4. php zval_copy_static_var(),zval _ 引用计数 _ 变量分离 _ 写时拷贝
  5. “2021知乎高赞好物100”榜单揭晓 知乎为美好生活奉上参考答案
  6. Mysql-Proxy自定义守护进程
  7. define 解析依赖,判断状态,初始化/触发加载 --------require 同步加载(直接返回)/异步加载(创建匿名模块,判断状态,初始化/触发加载)
  8. 各行业大数据可视化界面参考
  9. Redis 如何处理已经过期的数据?
  10. 3-2:HTTP协议之URI(URL)和HTTP基本概念及其特征
  11. SQL必知必会-组合查询
  12. OpenShift 4 - 部署 RabbitMQ 集群
  13. MySQL数据库进阶(事务Transaction)
  14. Python的输出、判断、循环函数:Luogu1014Cantor表
  15. SpringBoot项目多环境配置(亲测有效)
  16. 病毒制作实践小记:运行关机、蓝屏炸弹、进程关闭、拓展名病毒
  17. 解密区块链最强心脏 迅雷链共识算法详解
  18. resNet论文学习心得
  19. 领导层必看:要想公司管理好,办公软件少不了
  20. 高质量的CAD练习图纸在线分享

热门文章

  1. 外贸新手是怎么做好外贸网站优化?
  2. mysql 修改盘符
  3. k8s创建pod资源失败OCI runtime create failed systemd cgroup flag passed, but systemd support for managing c
  4. crontab 每周五_/etc/crontab 怎么设置每月最后一个周六任务
  5. [论文翻译]UNet++: A Nested U-Net Architecture for Medical Image Segmentation
  6. 《红色警戒2·尤里复仇》-第五章 无限超武
  7. 底层网络知识详解:从二层到三层-第6讲-交换机与VLAN:办公室太复杂,我要回学校
  8. 软件测试web自动化测试
  9. matlab如何调用参数的函数,Matlab函数如何调用?函数调用方法介绍
  10. 网络直播,如何跳出组播的坑!