交易补偿方法及装置与流程

文档序号:22431792发布日期:2020-10-02 10:15阅读:110来源:国知局
交易补偿方法及装置与流程

本发明涉及金融支付技术领域,尤其涉及一种交易补偿方法及装置。



背景技术:

支付业务中涉及的交易链路都比较长,一笔支付交易涉及的系统可能达数百个之多,任何一个系统的异常或超时都可能导致该交易订单处于异常状态。这些交易异常状态的订单有些已完成了银行扣款,客户资金已经被转移到支付机构账户,但在用户的支付界面上却显示支付异常,因此支付机构有必要针对此类异常交易订单做出补偿动作,以查询出该笔扣款的实际状态并通知商户。

由于网络和银行等原因,任何支付机构都不能确保每一笔支付交易都能同步得到最终结果,因此补偿交易机制在金融支付领域必不可少,而且补偿交易机制的优劣将会直接影响用户的支付体验,甚至影响到支付产品的竞争力。



技术实现要素:

本发明的目的在于提供一种交易补偿方法及装置,能够在支付交易异常时实现交易补偿的秒级响应,提升用户的支付体验。

为了实现上述目的,本发明的一方面提供一种交易补偿方法,包括:

从业务系统中获取状态变更的交易订单;

基于所述交易订单的更新时间以及任务配置表中对应交易订单的补偿时间,计算每个所述交易订单的补偿发起时间;

按照补偿发起时间的先后顺序将所述交易订单缓存至内存队列;

定时扫描内存队列中的订单任务,并在达到补偿发起时间时通知业务系统向对应所述交易订单发起补偿动作。

优选地,从业务系统中获取状态变更交易订单的方法包括:

通过实时数据复制平台从业务系统中订阅数据库日志,接收业务系统中发生变更的交易订单表,所述交易订单表包括多个交易订单,所述交易订单包括订单号、交易金额、更新时间以及更新状态。

较佳地,在基于所述交易订单的更新时间以及任务配置表中对应交易订单的补偿时间,计算每个所述交易订单的补偿发起时间之前还包括:

在服务端中预先部署任务配置表,所述任务配置表中配置有多种交易订单对应的补偿时间。

进一步地,基于所述交易订单的更新时间以及任务配置表中对应交易订单的补偿时间,计算每个所述交易订单的补偿发起时间的方法包括:

提取所述交易订单表中各交易订单的更新时间;

遍历所述交易订单,从任务配置表中查找与所述交易订单对应的补偿时间;

基于所述交易订单的更新时间以及对应的补偿时间,相加得到各个所述交易订单的补偿发起时间。

优选地,在按照补偿发起时间的先后顺序将所述交易订单缓存至内存队列之前还包括:

构建阶梯时效的多个补偿队列,每个补偿队列用于处理相应时效的交易订单补偿动作;

所述补偿队列包括秒级内存补偿队列和分级内存补偿队列。

优选地,定时扫描内存队列中的订单任务,并在达到补偿发起时间时通知业务系统向对应所述交易订单发起补偿动作的方法包括:

将所述交易订单全部缓存至秒级内存补偿队列;

每秒执行一次秒级补偿任务,从秒级补偿队列中扫描出补偿发起时间达到当前时间的订单任务,并将该订单任务通知业务系统向对应所述交易订单发起补偿动作。

优选地,定时扫描内存队列中的订单任务,并在达到补偿发起时间时通知业务系统向对应所述交易订单发起补偿动作的方法还包括:

待上一次秒级补偿任务执行完毕后,汇总补偿失败的所述交易订单并清空秒级内存补偿队列的缓存;

将补偿失败的所述交易订单按照补偿发起时间的先后顺序缓存至分级内存补偿队列;

每分钟执行一次分级补偿任务,从分级内存补偿队列中扫描出补偿发起时间达到当前时间的订单任务,并将该订单任务通知业务系统向对应所述交易订单发起补偿动作。

优选地,定时扫描内存队列中的订单任务,并在达到补偿发起时间时通知业务系统向对应所述交易订单发起补偿动作的方法还包括:

待上一次分级补偿任务执行完毕后,汇总再次补偿失败的所述交易订单并清空分级内存补偿队列的缓存;

将再次补偿失败的所述交易订单添加至异常任务表,并通知人工介入处理。

与现有技术相比,本发明提供的交易补偿方法具有以下有益效果:

本发明提供的交易补偿方法中,首先从业务系统中获取状态发生变更的交易订单,并从任务配置表提取出与这些交易订单对应的补偿时间,通过将每个交易订单更新时间与任务配置表中对应的补偿时间相加,即可得到每个状态发生变更的交易订单的补偿发起时间,然后按照补偿发起时间的先后顺序将这些交易订单缓存至内存队列,利用大数据工具flink定时扫描内存队列中的订单任务,并在达到补偿发起时间时通过mq及时通知业务系统向对应的交易订单发起补偿动作。

可见,相比较于现有技术采用的磁盘扫描补偿方案,本发明改用内存流式计算方案,能够将交易与补偿解耦进而提升系统性能;另外,采用大数据工具flink,能够实现对内存队列中订单任务的秒级计算,极大的提高了支付交易异常订单的补偿速度。

本发明的另一方面提供一种交易补偿装置,应用有上述技术方案提到的交易补偿方法,该装置包括:

实时数据复制单元,用于从业务系统中获取状态变更的交易订单;

流式消息处理单元,用于基于所述交易订单的更新时间以及任务配置表中对应交易订单的补偿时间,计算每个所述交易订单的补偿发起时间;

队列缓存单元,用于按照补偿发起时间的先后顺序将所述交易订单缓存至内存队列;

任务处理单元,用于定时扫描内存队列中的订单任务,并在达到补偿发起时间时通知业务系统向对应所述交易订单发起补偿动作。

与现有技术相比,本发明提供的交易补偿装置的有益效果与上述技术方案提供的交易补偿方法的有益效果相同,在此不做赘述。

本发明的第三方面提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述交易补偿方法的步骤。

与现有技术相比,本发明提供的计算机可读存储介质的有益效果与上述技术方案提供的交易补偿方法的有益效果相同,在此不做赘述。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为实施例一中交易补偿方法的一种流程示意图;

图2为实施例一中交易补偿方法另一种流程示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。

实施例一

请参阅图1,本实施例提供一种交易补偿方法,包括:

从业务系统中获取状态变更的交易订单;基于交易订单的更新时间以及任务配置表中对应交易订单的补偿时间,计算每个交易订单的补偿发起时间;按照补偿发起时间的先后顺序将交易订单缓存至内存队列;定时扫描内存队列中的订单任务,并在达到补偿发起时间时通知业务系统向对应交易订单发起补偿动作。

本实施例提供的交易补偿方法中,首先从业务系统中获取状态发生变更且异常的交易订单,并从任务配置表提取出与这些交易订单对应的补偿时间,通过将每个交易订单更新时间与任务配置表中对应的补偿时间相加,即可得到每个状态发生变更的交易订单的补偿发起时间,然后按照补偿发起时间的先后顺序将这些交易订单缓存至内存队列,利用大数据工具flink定时扫描内存队列中的订单任务,并在达到补偿发起时间时通过mq及时通知业务系统向对应的交易订单发起补偿动作。

可见,相比较于现有技术采用的磁盘扫描补偿方案,本实施例改用内存流式计算方案,能够将交易与补偿解耦进而提升系统性能;另外,采用大数据工具flink,能够实现对内存队列中订单任务的秒级计算,极大的提高了支付交易异常订单的补偿速度。

具体地,上述实施例中从业务系统中获取状态变更交易订单的方法包括:

通过实时数据复制平台从业务系统中订阅数据库日志,接收业务系统中发生变更的交易订单表,交易订单表包括多个交易订单,交易订单的维度包括订单号、交易金额、更新时间以及更新状态。

考虑到系统的复杂性,可能同时存在多个业务系统,每个业务系统中会同时部署多个数据库,多个数据库同时又会产生多个状态发生变更的交易订单表,为便于实施业务系统的实施补偿动作,交易订单表除包括上述必要的维度信息外,还可能包括诸如业务系统名称、数据库名称、交易订单表名称、订单号字段名、交易金额、更新时间、mq队列名称、业务系统的权限控制字段等维度,以方便补偿动作溯源。

具体实施时,通过实时数据复制平台(rdrs)从业务系统的mysql数据库中订阅binlog日志,然后从binlog日志中获取状态发生变更且异常的交易订单表,此处的状态变更包括新增、修改和删除三种变更形式,可以理解的是,新增是指交易订单的从无到有,例如新提交一个交易订单,修改是指通过操作改变了交易订单的状态,例如将交易订单由提交状态变为支付状态,删除是指从有到无,例如删除当前已提交但未支付的交易订单。

上述实施例中,在基于交易订单的更新时间以及任务配置表中对应交易订单的补偿时间,计算每个交易订单的补偿发起时间之前还包括:

在服务端中预先部署任务配置表,任务配置表中配置有多种交易订单对应的补偿时间。任务配置表的作用可以理解为,通过建表的方式预先对常用异常交易订单的补偿时间进行预先配置,当从业务系统中获取到状态发生变更且交易失败的交易订单时,采用查表的方式从任务配置表中得到对应交易订单的补偿时间,进而可快速计算得到交易订单的补偿发起时间。

进一步地,上述实施例中基于交易订单的更新时间以及任务配置表中对应交易订单的补偿时间,计算每个交易订单的补偿发起时间的方法包括:

提取交易订单表中各交易订单的更新时间;遍历交易订单,从任务配置表中查找与交易订单对应的补偿时间;基于交易订单的更新时间以及对应的补偿时间,相加得到各个交易订单的补偿发起时间。

请参阅图2,上述实施过程可通过部署在flink端的流式消息处理组件来实现,流式消息处理组件通过kafka从实时数据复制平台实时拉取产生的交易订单数据,进而计算出每个状态发生变更且异常交易订单的补偿发起时间。

上述实施例中在按照补偿发起时间的先后顺序将交易订单缓存至内存队列之前还包括:

在服务端中构建阶梯时效的多个补偿队列,每个补偿队列用于处理相应时效的交易订单补偿动作;补偿队列包括秒级内存补偿队列和分级内存补偿队列。

具体实施时,如图2所示,通过在flink端中部署秒级任务处理组件对秒级内存补偿队列中的订单任务进行处理,以及通过在flink端中部署分级任务处理组件对分级内存补偿队列中的订单任务进行处理。采用秒级和分级协同处理方案,能够对时效要求高的订单任务优先实施秒级补偿动作,而对于秒级补偿动作失败和对时效要求低的订单任务实施分级补偿动作,这样通过两级互补的方式可以在重视补偿动作的时效性同时兼顾补偿动作的执行率。

具体地,上述实施例中定时扫描内存队列中的订单任务,并在达到补偿发起时间时通知业务系统向对应交易订单发起补偿动作的方法包括:

将交易订单全部缓存至秒级内存补偿队列;每秒执行一次秒级补偿任务,通过秒级任务处理组件从秒级补偿队列中扫描出补偿发起时间达到当前时间的订单任务,并将该订单任务通过mq方式通知业务系统向对应交易订单发起补偿动作。

待上一次秒级补偿任务执行完毕后,汇总补偿失败或仍为待补偿的交易订单并清空秒级内存补偿队列的缓存;将补偿失败或为待补偿的交易订单按照补偿发起时间的先后顺序缓存至分级内存补偿队列;每分钟执行一次分级补偿任务,通过分级任务处理组件从分级内存补偿队列中扫描出补偿发起时间达到当前时间的订单任务,并将该订单任务通过mq方式通知业务系统向对应交易订单发起补偿动作。

进一步地,待上一次分级补偿任务执行完毕后,汇总再次补偿失败或仍为待补偿的交易订单并清空分级内存补偿队列的缓存;发kafka通知服务端记录异常订单信息,由入库组件将再次补偿失败或仍为待补偿的交易订单添加至异常任务表,并通知人工介入处理。

此外,服务端还包括手工异常处理模块,用于对异常任务表中的交易订单,提供手工触发补偿处理功能。

流式消息处理组件还提供了大数据对账功能,流式消息处理组件运行时可能会因宕机发生待补偿订单丢失的情况,为了保证补偿数据的完整性,通过大数据对账分析订单任务,日终计算潜在丢失的待补偿订单,并补偿到异常任务表中,以保证最终补偿数据准确性。

上述实施例方案具有如下技术效果:

1、功能解耦:交易补偿与交易本身从系统层面解耦,减少交易系统复杂度,提升交易系统的性能。

2、提升补偿的实时性:利用flink进行准实时内存计算,提高补偿的实时性和灵活性,可以做到秒级的补偿,提升用户体验。

3、统一补偿:交易系统不需要重复建设补偿组件,减少系统重复开发的工作量,保证了系统的稳定性。

实施例二

本实施例提供一种交易补偿装置,包括:

实时数据复制单元,用于从业务系统中获取状态变更的交易订单;

流式消息处理单元,用于基于所述交易订单的更新时间以及任务配置表中对应交易订单的补偿时间,计算每个所述交易订单的补偿发起时间;

队列缓存单元,用于按照补偿发起时间的先后顺序将所述交易订单缓存至内存队列;

任务处理单元,用于定时扫描内存队列中的订单任务,并在达到补偿发起时间时通知业务系统向对应所述交易订单发起补偿动作。

与现有技术相比,本实施例提供的交易补偿装置的有益效果与上述实施例提供的交易补偿方法的有益效果相同,在此不做赘述。

实施例三

本实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述交易补偿方法的步骤。

与现有技术相比,本实施例提供的计算机可读存储介质的有益效果与上述技术方案提供的交易补偿方法的有益效果相同,在此不做赘述。

本领域普通技术人员可以理解,实现上述发明方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,上述程序可以存储于计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,上述的存储介质可以是:rom/ram、磁碟、光盘、存储卡等。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1