注意:以下文档只适用于TOP接口,请谨慎使用!

文档中心 > 聚石塔

订单同步服务使用

更新时间:2019/11/26 访问次数:2884729

【 基础规则:】 

1、订单同步服务场景适用于订单处理类的应用(如订单管理、ERP、商家后台系统);
2、对于非必须获取订单全部信息的应用,考虑数据安全问题,暂时无法对外提供(但保留用户可以申请的权利);
3、订单同步服务目前仅支持  杭州的经典网络  张家口的专用网络  数据库版本仅支持以下:
"MySQL 5.5","MySQL 5.6","MySQL 5.7","POLARDB(MySQL 5.6)",
"SQLServer 2008r2","SQLServer 2016_ent_ha","SQLServer 2016_std_ha","SQLServer 2012_ent_ha","SQLServer 2012_std_ha"  
 

一、操作流程:

    1)  登入聚石塔 控制台,进入“资源管理-电商业务组件-订单同步服务” 页面如下。 

            1.1)除上入口也可以进入零售云控制台 进行处理数据推送业务。 在零售云进入控制台选择聚石塔域。

        1.2)在聚石塔域数据推送组件中进行管理。

   2)  点击添加应用;选择对应的应用进行设置同步服务

    3) 设置推送字段(订单具体的字段可以查看taobao.trade.fullinfo.get介绍,商品具体可以查看taobao.item.seller.get介绍  不清楚可以提交工单咨询) 、绑定推送至的数据库、选择已授权的商家列表。注意:选择用户时必须是已经授权的用户,授权点击查看详情  

    4) 同步设置   ,主要设置推送的历史数据时长、数据保留时长、推送到库的字段。
    5)绑定数据库,选择同步到哪台RDS,选择同步的实例名称右箭头添加,RDS较多可通过搜索实例名称的方式添加

注意:如果一个appkey下有多个rds使用数据推送,当其中1个RDS到期不再使用数据推送了,请在页面上取消勾选或者直接移除它,否则将拖慢其他rds的数据推送。

    6)添加商家,选择已经授权的商家,将商家添加到对应推送的rds下

    注:对于历史数据的天数,交易是按订单创建时间计算,其他业务线是按修改时间计算。

 

二、通过API 添加或删除用户方法

//添加用户

 JushitaJdpUserAddRequest request=new JushitaJdpUserAddRequest();
      request.setRdsName(
"xxxx");//xxxxrds实例名
     JushitaJdpUserAddResponse response=client.execute(request,"session_xxxx");//session_xxxx为用户授权sessionKey;

使用API的方式 删除用户

//删除用户
      JushitaJdpUserDeleteRequest request=
new JushitaJdpUserDeleteRequest();
      request.setUserId(0L);
//这里设置用户id
      JushitaJdpUserDeleteResponse response=
client.execute(request);

注:对应的API地址:点击查看

 如果用户已经存在,调用add接口只会改变路由关系,而不会重复推历史数据。

 如果先调用delete接口,再调用add接口,则会重新推送历史数据(推送的历史数据天数按之前页面的设置天数,和session失效再生效的补单规则不一样)(如果前后的rds不同,添加add需要在delete之后10分钟再执行)。

三、订单同步服务表结构

订单同步服务数据推送到默认库sys_info,该库中包含交易 JDP_TB_TRADE等表。订单推送表结构设计为:关键字段+Text大字段,其中关键字段的命名和API返回字段是一致的。业务字段增加,只增加到Text大字段里。而关键字段一旦确定,就不会再改变。

1)表结构如下

交易

JDP_TB_TRADE

名称

类型

长度

说明

tid

NUMBER

20

交易订单id

status

VARCHAR

64

交易状态

type

VARCHAR

64

交易类型

seller_nick

VARCHAR

32

卖家昵称

buyer_nick

VARCHAR

256

买家昵称

created

DATETIME

 

交易创建时间

modified

DATETIME

 

交易修改时间

jdp_created

DATETIME

 

数据推送的创建时间

jdp_modified

DATETIME

 

数据推送的修改时间

jdp_hashcode

VARCHAR

128

Jdp用来做数据校验的字段

jdp_response

MEDIUMTEXT(sqlserverTEXT)

 

API返回的整个JSON字符串,格式和API保持一致

(参看taobao.trade.fullinfo.get)

索引

(`seller_nick`,`jdp_modified`),

(`jdp_modified`),

(`seller_nick`,`modified`),

(`modified`)

 

退款

JDP_TB_REFUND

名称

类型

长度

说明

refund_id

NUMBER

20

退款单号

status

VARCHAR

64

退款状态

seller_nick

VARCHAR

32

卖家昵称

buyer_nick

VARCHAR

256

买家昵称

tid

NUMBER

20

主订单id

oid

NUMBER

20

子订单id

created

DATETIME

 

退款时间

modified

DATETIME

 

修改时间

jdp_created

DATETIME

 

数据推送的创建时间

jdp_modified

DATETIME

 

数据推送的修改时间

jdp_hashcode

VARCHAR

128

Jdp用来做数据校验的字段

jdp_response

MEDIUMTEXT

(sqlserverTEXT)

 

API返回的整个JSON字符串,格式和API保持一致

(参看taobao.refund.get)

索引

(`seller_nick`,`jdp_modified`),

(`jdp_modified`),

(`seller_nick`,`modified`),

(`modified`)

 

商品

JDP_TB_ITEM

名称

类型

长度

说明

num_iid

NUMBER

20

商品数字id

nick

VARCHAR

32

卖家nick

approve_status

VARCHAR

32

商品上传后的状态。onsale出售中,instock库中

cid

VARCHAR

256

商品类目ID

has_showcase

VARCHAR

32

橱窗推荐,true/false

has_discount

VARCHAR

32

支持会员打折,true/false

created

DATETIME

 

发布时间

modified

DATETIME

 

商品修改时间

jdp_created

DATETIME

 

数据推送的创建时间

jdp_modified

DATETIME

 

数据推送的修改时间

jdp_delete

NUMBER

2

0表示正常,1表示逻辑删除。当收到商品删除消息时,程序做逻辑删除

jdp_hashcode

VARCHAR

126

Jdp用来做数据校验的字段

jdp_response

MEDIUMTEXT(sqlserverTEXT)

 

API返回的整个JSON字符串,格式和API保持一致,但不包含商品描述字段

(参看taobao.item.seller.get)

索引

(`nick`,`jdp_modified`),

(`jdp_modified`),

(`nick`,`modified`),

(`modified`)

 

分销代销订单

JDP_FX_TRADE

名称

类型

长度

说明

fenxiao_id

NUMBER

20

分销流水号,分销平台产生的主键

tc_order_id

VARCHAR

32

主订单ID (经销不显示)

status

VARCHAR

64

采购单交易状态

supplier_username

VARCHAR

32

供应商在来源网站的帐号名

distributor_username

VARCHAR

32

分销商在来源网站的帐号名

created

DATETIME

 

采购单创建时间

modified

DATETIME

 

交易修改时间

jdp_created

DATETIME

 

数据推送的创建时间

jdp_modified

DATETIME

 

数据推送的修改时间

jdp_hashcode

VARCHAR

128

Jdp用来做数据校验的字段

jdp_response

MEDIUMTEXT(sqlserverTEXT)

 

API返回的整个JSON字符串,格式和API保持一致

(参看taobao.fenxiao.orders.get)

索引

(`supplier_username`,`jdp_modified`),

(`jdp_modified`),

(`supplier_username`,`modified`),

(`modified`)

 

分销退款(已下线)

JDP_FX_REFUND

名称

类型

长度

说明

sub_order_id

NUMBER

20

子单id

refund_create_time

DATETIME

 

退款创建时间

refund_status

Number

10

退款状态

supplier_nick

VARCHAR

32

供应商nick

distributor_nick

VARCHAR

32

分销商nick

modified

DATETIME

 

退款修改时间

jdp_created

DATETIME

 

数据推送的创建时间

jdp_modified

DATETIME

 

数据推送的修改时间

jdp_hashcode

VARCHAR

128

Jdp用来做数据校验的字段

jdp_response

MEDIUMTEXT(sqlserverTEXT)

 

API返回的整个JSON字符串,格式和API保持一致

(参看taobao.fenxiao.refund.get)

索引

(`supplier_nick`,`jdp_modified`),

(`jdp_modified`),

(`supplier_nick`,`modified`),

(`modified`) 

注:分销退款在勾选 分销(代销)时会默认推送

 

 分销经销订单

JDP_JX_TRADE

名称

类型

长度

说明

dealer_order_id

NUMBER

20

经销采购单编号

order_status

VARCHAR

64

采购单状态

supplier_nick

VARCHAR

32

供应商nick

applier_nick

VARCHAR

32

分销商nick

applied_time

DATETIME

 

申请时间

modified_time

DATETIME

 

修改时间

jdp_created

DATETIME

 

数据推送的创建时间

jdp_modified

DATETIME

 

数据推送的修改时间

jdp_hashcode

VARCHAR

128

Jdp用来做数据校验的字段

jdp_response

MEDIUMTEXT(sqlserverTEXT)

 

API返回的整个JSON字符串,格式和API保持一致

(参看taobao.fenxiao.dealer.requisitionorder.query)

索引

(`supplier_nick`,`jdp_modified`),

(`jdp_modified`),

(`supplier_nick`,`modified_time`),

(`modified_time`)

 

天猫退款(已下线,合并到退款中)

JDP_TM_REFUND

名称

类型

长度

说明

refund_id

NUMBER

20

退款单号

status

VARCHAR

64

退款状态

refund_phase

VARCHAR

32

售中、售后

seller_nick

VARCHAR

32

卖家昵称

buyer_nick

VARCHAR

32

买家昵称

tid

NUMBER

20

交易主订单id

oid

NUMBER

20

交易主订单id

created

DATETIME

 

退款时间

modified

DATETIME

 

修改时间

jdp_created

DATETIME

 

数据推送的创建时间

jdp_modified

DATETIME

 

数据推送的修改时间

jdp_hashcode

VARCHAR

128

Jdp用来做数据校验的字段

jdp_response

MEDIUMTEXT(sqlserverTEXT)

 

API返回的整个JSON字符串,格式和API保持一致

索引

(`seller_nick`,`jdp_modified`),

(`jdp_modified`),

(`seller_nick`,`modified`),

(`modified`)

 

天猫退货 (已下线)

JDP_TM_RETURN

名称

类型

长度

说明

refund_id

NUMBER

20

退款单号

status

VARCHAR

32

退货状态

sid

VARCHAR

128

物流运单号

refund_phase

VARCHAR

32

售中、售后

tid

NUMBER

20

交易主订单id

oid

NUMBER

20

交易主订单id

created

DATETIME

 

退款时间

modified

DATETIME

 

修改时间

jdp_created

DATETIME

 

数据推送的创建时间

jdp_modified

DATETIME

 

数据推送的修改时间

jdp_hashcode

VARCHAR

128

Jdp用来做数据校验的字段

jdp_response

MEDIUMTEXT(sqlserverTEXT)

 

API返回的整个JSON字符串,格式和API保持一致

索引

(`status`,`jdp_modified`),

(`jdp_modified`)

  

2)sys_info数据删除超过设置的数据保留时间会自动删除,具体可以在3.2)查看设置保留时间的方法。

3)sys_info订单数据查询(轮询)代码示例

public static void doSyncToBiz(Connection con, String start, String end)
         
throws SQLException, ApiException {
      
// 这里以mysql库,查询交易表为例子
      String query = 
"select tid,jdp_response from jdp_tb_trade where jdp_modified >? and jdp_modified<? order by jdp_modified,tid";
      PreparedStatement sqlStatement = con.prepareStatement(query);
      sqlStatement.setString(1, start);
      sqlStatement.setString(2, end);
      ResultSet result = sqlStatement.executeQuery();
      
while (result.next()) {         
         String jdpResponse = result.getString(
"jdp_response");
         
// 把json转为API的返回对象
         TradeFullinfoGetResponse 
rsp = TaobaoUtils.parseResponse(
               jdpResponse, TradeFullinfoGetResponse.
class);
         
// TODO isv根据业务需要把相关字段更新到业务库
         
//
      }
   }

 

四、RDS慢SQL等问题解决

相信ISV们在使用云数据库RDS的时候,肯定遇到过慢sql的一系列问题,我们如何能够快速的排查到原因?如何来优化sql的性能?同样,我们在使用同步服务数据库的时候,也会遇到查询时因为索引问题慢,因为子查询导致查询慢,分页的问题等等,这么麻烦的事情我们的DBA根据实际经验积累,对这些问题进行了总结和归纳,更好的帮助ISV们优化sql,更好的使用RDS以及同步服务。详细请下载:

双十一RDS最佳实践

同步服务数据库访问规范

五、常见问题 FAQ

1、为什么我的数据没有实时推送?
请确认您的应用是不是刚开通订单同步服务,历史数据需要一定的时间才能推送完成。

2、为什么之前数据推送正常,突然不再进行数据推送了?
请先确认用户的sessionkey是否已经到期(可以拿sessionkey用测试工具调用API测试下),如果确认没有到期,再联系聚石塔技术支持小二

3、数据推送有延时,modified与jdp_modified时间相差比较大,查看原因?
请按照下面的步骤排查下:
 之前用户授权是否有间断过,部分数据是通过对单的方式增加进来的
 对于交易订单,子订单是否有更新,由于目前modified时间是针对主订单的,所以modified时间不变,后期会增加子订单的modified字段
 排查推送的RDS的性能是否异常,或者是否出现磁盘已经满了
 如果以上排查都没有问题的话,可以联系聚石塔技术支持小二(首页在线旺旺)

4、按记录的变化时间,来轮询查询记录,如何才能不漏单?
按变化时间倒序,然后从后向前翻页。
目的:防止在翻页过程中,有记录变化了
原因:从后往前翻页"是防止漏单的必要条件,是防止已经读取过的数据变化了,导致后续数据整体迁移1位,
倒序: 倒序+从后向前翻页还有个好处,能够记录已经读过的时间点,如果中断,下次可以从这个时间点开始读

5、某个用户的数据忽然停止推送?
1)排查session是否失效,排查方法调用taobao.jushita.jdp.users.get查看;
2)session失效后,怎么办? session失效后,此用户的推送暂停。待用户重新授权后(期间不要删除用户),数据推送会自动恢复,期间数据也会补上来。session失效超过1个月,用户将被删除,需重新添加 *用户是否存在:taobao.jushita.jdp.users.get

6、从sys_info同步数据,时间间隔一般是怎么设置的?
正常的数据是实时同步,延迟1~3S左右; 补单机制,交易的补单间隔时间5~20分钟 ( 商品和退款补单时间稍长,约为10~30)

7、15天之前的订单如果交易有更改会推送过来吗?
订单如果有修改,不管保留多久,都会实时推送,包含子订单的修改也会实时推送;

8、订单同步服务会不会有漏单的情况?
实时推送和补单的机制,如果实时数据漏了,补单可以确保不漏单;

9、以前订购的RDS可以选择用户,新订购的RDS选择不了用户呢?
当一个应用 下的数据会推送到多台RDS的时候,如果用户已经推送RDS1,需要先解除用户与RDS1的绑定,然后在把用户与RDS2关联,使用taobao.jushita.jdp.user.delete这个接口可批量解除关系,单个可通过页面直接操作;

10、在我的APPKEY下 选择不到我订购的RDS?
RDS是否已经关联到其它APPKEY下,原来的appkey不想关联那个rds了,请移除那个rds,而不仅仅取消启用,否则新的关联关系也建立不起来;

11、通过页面,添加用户,最多支持多少个呢?
页面添加用户最多支持200个,多于200个请通过API JushitaJdpUserAddRequest添加;

12、想知道 jdp_response 这个text里  解析后的每个字段的长度和类型?
目前没有 jdp_response 对应的API返回的字段长度;

关键字段的长度文档里是有的,非关键字段的长度,其实我们很想提供的,但API返回的字段并不是直接对应后端淘宝的数据库,有时候是几个数据库的字段合并起来返回一个值,除了那些非常基本的字段可以给出,其他的自行了解设置;

13、开启订单同步服务后是聚石塔系统自动创建一个数据库保存同步的订单数据还是可以指定放置某个数据库下面?
订单推送存放在系统自建的SYS_INFO库里;

14、在聚石塔后台已经启用了同步服务,是不是还需要通过什么渠道申请?
已经开通订单同步不需要在申请直接通过//open.taobao.com/doc/detail.htm?id=101587设置即可使用,未开通的需要按照申请流程开通;

15、当订单同步服务启用后,是不是可以不用通过淘宝开放平台的接口来读取订单数据?可以直接读自己数据库中对应的表将最新的数据更新到商家系统当中?
订单同步服务会主动将订单数据及更新消息推送到RDS里;

16、发货等接口还是要继续通过淘宝开放平台接口来处理?
是的,目前订单同步只是同步数据且sysinfo权限为只读,update操作都是通过接口来处理

17、订单同步的选择推送的用户数量有没有限制吗?
暂时没有限制,建议单应用最大不要超过50万

18、添加用户报如下错误
GetRefunds_Error:{"error_response":{"code":27,"msg":"Invalid session:session-expired","sub_code":"session-expired"}}
原为session过期需要商家要对appkey重新授权,授权链接//open.taobao.com/doc/detail.htm?spm=0.0.0.0.gxFX85&id=101423;

19、订单同步里面的"商品同步"是否只有销售中的宝贝? 仓库中的宝贝不会同步?
仓库中的宝贝也会同步的;

20、怎么查询我已经同步了哪些商家的数据?
查已使用数据推送的用户,可以用taboao.jushita.jdp.users.get来查询

21、推送数据保留30天,是根据创建时间,还是修改时间?
系统保留数据时长jdp_modified根据这个时间来保留。调用接口删除  是按modified时间来删除的

22、什么时候会加入分销和经销的订单,分销的商品是否会推送?
由于分销将经销,代销两种类型拆到不同的API,目前推送只有代销。经销可以走API获取。
我们产品会考虑增加推送经销的订单;(计划4月底)

22、问一下,订单同步服务数据推送及时性比较差,那下完单多久会推倒RDS ?
99%的订单是3s以内推送,1% 5~20分钟内补上

23、订单同步服务与消息服务的区别?
消息服务实时性比较高,只包含部分的变化信息,完整的信息需要通过API来调用
订单同步服务实时性要慢于消息服务,但是数据较全和API返回数据相同;实时性要求特别高的不适合使用

24、已同步到RDS里的商品,上架7天后的自动重发,会不会同步更新?
会同步;有两种方式:

自动上架的商品的上架动作是不会推送的,而是要靠下面的公式计算
手工上架的商品会同步更新;

25、设置订单同步服务时,交易表默认选择了所有字段,包含《服务子订单列表》和《优惠详情》,取消这两个字段后,想重新添加时无法选择;
《服务子订单列表》和《优惠详情》2个不支持子字段选择,方式为全选,要么不选;如果客户需要用这两个字段,只能删除重新添加这个NICK;
注:NICK重新添加,因据库里的数据已经存在,没有变化过的数据,是不会重新推的;

26、session(用户授权)失效怎么办
session失效后,此用户的推送暂停。待用户重新授权后(期间不要删除用户),数据推送会自动恢复,期间数据也会补上来。session失效超过1个月,用户将被删除,需重新添加。请注意,用户授权失效后推送会在两天内停止,如果您需要立刻停止,建议调用taobao.jushita.jdp.user.delete删除绑定关系

27、如何给sys_info创建索引?
在订单同步控制台提交sql变更申请修改:https://console.open.taobao.com/#/tdp/rdsDdl 

 28、数据同步服务如何收费?

开放平台技术服务费文档:  https://open.taobao.com/docs/doc.htm.htm?spm=a219a.7629140.0.0.kp8dzs&treeId=23&articleId=104559&docType=1

FAQ

关于此文档暂时还没有FAQ
返回
顶部