掌桥专利:专业的专利平台
掌桥专利
首页

对账结果的接收方法及装置、存储介质及电子装置

文献发布时间:2024-04-18 19:58:53


对账结果的接收方法及装置、存储介质及电子装置

技术领域

本申请涉及区块链技术领域,具体而言,涉及一种对账结果的接收方法及装置、存储介质及电子装置。

背景技术

传统对账方法是核对账目,是对一定周期内的交易进行双方确认的过程。两个支付实体(银行或者第三方支付公司)对前一日交易进行清分前实施对账,双方各自生成对账单,确认在固定周期内双方的交易、资金的一致性和正确性。但传统对账方法存在以下缺点:第一,可扩展性差。对账过程中查询账务相关数据,如交易流水、商户信息等,如果数据量巨大,对数据库性能影响较大,但对账逻辑扩展的复杂度高,关联方多,因此分拆数据库表的扩展成本高,导致可扩展性差。第二,逐行比对算法效率较低,但算法上并无好的优化余地。如果采用数据库INTERSECT、MINUS,则逐行比对算法对数据库压力也高。第三,在业务量大的情况下对账服务器及数据库服务器负荷较高。对常见的支付实体(银行或者第三方支付公司)而言,至少有上百家上游渠道需要比对,每一家都有几十万条交易记录,即便采用读写分离,对账时候使用读库,数据库压力很大。第四,导入批量文件,逐行入库效率较为低下。因每一次都需要建立网络连接、关闭连接。综上,传统对账方法虽然采用了高成本(例如,使用高性能数据库),却没能有效地实现高处理能力、可拓展的对账效果,无法实现处理速度、维护、容量规划的灵活变换。

针对相关技术中,对不同交换方之间进行对账的过程复杂,对账成本高,且对账效率低下的问题,目前尚未提出有效的解决方案。

因此,有必要对相关技术予以改良以克服相关技术中的所述缺陷。

发明内容

本申请实施例提供了一种对账结果的接收方法及装置、存储介质及电子装置,以至少解决了对不同交换方之间进行对账的过程复杂,对账成本高,且对账效率低下的问题。

根据本申请实施例的一方面,提供一种对账结果的接收方法,包括:根据第一交换方在不同交换时间点的交换数据和预设的区块链对账规则生成第一哈希序列,以及根据所述区块链对账规则和第二交换方在所述不同交换时间点的交换数据生成第二哈希序列;将所述第一哈希序列和所述第二哈希序列发送至合约区块链,以指示所述合约区块链比较相同交换时间点对应的第一哈希序列和第二哈希序列,得到对账结果;接收所述合约区块链发送的对账结果。

在一个示例性的实施例中,将所述第一哈希序列和所述第二哈希序列发送至合约区块链之后,上述方法还包括:在预设定时之后获取所述第一哈希序列和所述第二哈希序列对应的上传结果;根据所述上传结果确定所述第一哈希序列和/或所述第二哈希序列的上传时间。

在一个示例性的实施例中,根据所述上传结果确定所述第一哈希序列和/或所述第二哈希序列的上传时间之后,上述方法还包括:比较所述上传时间与预设上链时间的大小;在所述上传时间小于等于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链成功;在所述上传时间大于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链失败。

在一个示例性的实施例中,在所述上传时间大于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链失败之后,上述方法还包括:重新发起将所述第一哈希序列和/或所述第二哈希序列上传至所述合约区块链的上链流程,并记录重新发起上链流程的目标次数;在所述目标次数大于预设次数的情况下,生成告警提示信息,其中,所述告警提示信息用于提示目标对象对上链流程进行人工干预;在所述目标次数小于或等于预设次数的情况下,重复发起所述上链流程。

在一个示例性的实施例中,接收所述合约区块链发送的对账结果之后,上述方法还包括:从所述对账结果中提取目标字段对应的数值,其中,所述目标字段为在所述合约区块链的返回接口处预设的对账结果字段;在所述数值为第一值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中还未进行比对操作;在所述数值为第二值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账成功;在所述数值为第三值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账失败。

在一个示例性的实施例中,在所述数值为第三值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账失败之后,上述方法还包括:确定引起所述对账失败的所述第一哈希序列对应的第一交换数据和所述第二哈希序列对应的第二交换数据;对所述第一交换数据与所述第二交换数据进行细粒度拆分,其中,所述细粒度拆分用于将不同交换时间点对应的时间划分粒度下调一级;根据细粒度拆分结果确定所述第一交换数据对应的第三哈希值序列以及所述第二交换数据对应的第四哈希值序列;将所述第三哈希值序列和所述第四哈希值序列上传至所述合约区块链进行重复比对操作。

在一个示例性的实施例中,接收所述合约区块链发送的对账结果之后,包括:将所述对账结果分别发送至所述第一交换方、所述第二交换方;在确定所述对账结果指示对账失败的情况下,指示所述第一交换方与所述第二交换方互相发送携带对账失败的交易报文,其中,所述交易报文用于提示不同的交换方对交换数据进行差错处理。

根据本申请实施例的另一方面,还提供了一种对账结果的接收装置,包括:生成模块,用于根据第一交换方在不同交换时间点的交换数据和预设的区块链对账规则生成第一哈希序列,以及根据所述区块链对账规则和第二交换方在所述不同交换时间点的交换数据生成第二哈希序列;发送模块,用于将所述第一哈希序列和所述第二哈希序列发送至合约区块链,以指示所述合约区块链比较相同交换时间点对应的第一哈希序列和第二哈希序列,得到对账结果;接收模块,用于接收所述合约区块链发送的对账结果。

在一个示例性的实施例中,上述装置还包括:第一确定模块,用于在预设定时之后获取所述第一哈希序列和所述第二哈希序列对应的上传结果;根据所述上传结果确定所述第一哈希序列和/或所述第二哈希序列的上传时间。

在一个示例性的实施例中,上述确定模块还包括:比较单元,用于根据所述上传结果确定所述第一哈希序列和/或所述第二哈希序列的上传时间之后,比较所述上传时间与预设上链时间的大小;在所述上传时间小于等于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链成功;在所述上传时间大于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链失败。

在一个示例性的实施例中,上述确定模块还包括:记录单元,用于在所述上传时间大于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链失败之后,重新发起将所述第一哈希序列和/或所述第二哈希序列上传至所述合约区块链的上链流程,并记录重新发起上链流程的目标次数;在所述目标次数大于预设次数的情况下,生成告警提示信息,其中,所述告警提示信息用于提示目标对象对上链流程进行人工干预;在所述目标次数小于或等于预设次数的情况下,重复发起所述上链流程。

在一个示例性的实施例中,上述装置还包括:第二确定模块,用于接收所述合约区块链发送的对账结果之后,从所述对账结果中提取目标字段对应的数值,其中,所述目标字段为在所述合约区块链的返回接口处预设的对账结果字段;在所述数值为第一值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中还未进行比对操作;在所述数值为第二值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账成功;在所述数值为第三值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账失败。

在一个示例性的实施例中,上述第二确定模块,还包括:拆分单元,用于在所述数值为第三值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账失败之后,确定引起所述对账失败的所述第一哈希序列对应的第一交换数据和所述第二哈希序列对应的第二交换数据;对所述第一交换数据与所述第二交换数据进行细粒度拆分,其中,所述细粒度拆分用于将不同交换时间点对应的时间划分粒度下调一级;根据细粒度拆分结果确定所述第一交换数据对应的第三哈希值序列以及所述第二交换数据对应的第四哈希值序列;将所述第三哈希值序列和所述第四哈希值序列上传至所述合约区块链进行重复比对操作。

在一个示例性的实施例中,上述装置还包括:指示模块,用于接收所述合约区块链发送的对账结果之后,将所述对账结果分别发送至所述第一交换方、所述第二交换方;在确定所述对账结果指示对账失败的情况下,指示所述第一交换方与所述第二交换方互相发送携带对账失败的交易报文,其中,所述交易报文用于提示不同的交换方对交换数据进行差错处理。

根据本申请实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述对账结果的接收方法。

根据本申请实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述对账结果的接收方法。

通过本发明,在获取到不同交换方生成的交换数据之后,可以基于预设的区块链对账规则根据不同交换数据出现的交换时间点将交换数据转换为对应的哈希序列,继而通过在合约区块链中比较相同交换时间点对应至少两个交换方上传的自身哈希序列,对至少两个交换方进行对账,并获取合约区块链最终输出的对账结果,从而提升不同交换方进行对账的效率,解决了相关技术对不同交换方之间进行对账的过程复杂,对账成本高,且对账效率低下的问题。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例的一种对账结果的接收方法的计算机终端的硬件结构框图;

图2是根据本申请实施例的对账结果的接收方法的流程图;

图3是根据本申请实施例的一种区块链对账方法的流程示意图;

图4是根据本申请实施例的对账结果的接收装置的结构框图(一);

图5是根据本申请实施例的对账结果的接收装置的结构框图(二)。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本申请实施例的一种对账结果的接收方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的服务器登录方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种运行于上述计算机终端的对账结果的接收方法,图2是根据本申请实施例的对账结果的接收方法的流程图,如图2所示,该流程包括如下步骤:

步骤S202,根据第一交换方在不同交换时间点的交换数据和预设的区块链对账规则生成第一哈希序列,以及根据所述区块链对账规则和第二交换方在所述不同交换时间点的交换数据生成第二哈希序列;

作为一种可选的实施方式,第一交换方可以每隔1小时启动上个批次的对账,调度执行时间可以设置为每小时的第25分钟,第二交换方也根据上述时间周期参与对账;

进一步的,进行第一交换方与第二交换方之间的对账时,具体包括:获取第一交换方在上一个1小时范围对应的对账批次内生成的所有交易信息,交易信息中包括多个交易报文,将一个批次的交易以交易报文内的业务处理时间字段分钟数相同的交易进行分片,也就是,比如一个批次的交易,业务处理时间为2021-09-08T10:00:00--2021-09-08T10:00:59的在分钟“00”,业务处理时间为2021-09-08T10:01:00--2021-09-08T10:01:59的在分钟“01”,以此类推,将每分钟划分为60个时间区间,并通过预设的区块链对账规则对每一个时间区间内的数据进行hash计算,确定该时间区间中所有数据对应的唯一哈希值,将60个时间区间对应的60个哈希值汇总,得到第一交换方在一个对账周期内生成的所有交换数据对应的第一哈希序列。

需要说明的是,为了使得不同的交换方之间可以进行有效的比对,对于第二交换方生成哈希序列的方式与第一交换方相同,并且上述确定哈希序列的过程支持分钟级并行处理。上述并行处理可以理解为在整个对账过程,可以预设为是以分钟为粒度参与对账,分钟与分钟之间完全并行,不同分钟之间不同环节不需要互相等待。使得在对交换方的交换数据进行处理,无需关注数据之间的关联,仅对处于同一分钟区间内的数据进行hash计算即可,减少传统对账过程中业务量过大时逐一处理导致的处理效率低的问题,且通过并行处理缩短了对账数据的导入时间。

步骤S204,将所述第一哈希序列和所述第二哈希序列发送至合约区块链,以指示所述合约区块链比较相同交换时间点对应的第一哈希序列和第二哈希序列,得到对账结果;

例如,第一交换方将8月2日12点至13点之间自身生成的交换数据转换为多个第一哈希序列,对应的第二交换方将8月2日12点至13点之间自身生成的交换数据转换为多个第二哈希序列,当使用合约区块链对多个第一哈希序列和多个第二哈希序列进行自动对账时,比较在12点至13点之间相同分钟对应的哈希序列中的哈希值,当哈希值的数值相同时,表名该哈希值对应的交换数据对账成功。

步骤S206,接收所述合约区块链发送的对账结果。

通过上述步骤,在获取到不同交换方生成的交换数据之后,可以基于预设的区块链对账规则根据不同交换数据出现的交换时间点将交换数据转换为对应的哈希序列,继而通过在合约区块链中比较相同交换时间点对应至少两个交换方上传的自身哈希序列,对至少两个交换方进行对账,并获取合约区块链最终输出的对账结果,从而提升不同交换方进行对账的效率,解决了相关技术对不同交换方之间进行对账的过程复杂,对账成本高,且对账效率低下的问题。

在一个示例性的实施例中,将所述第一哈希序列和所述第二哈希序列发送至合约区块链之后,上述方法还包括:在预设定时之后获取所述第一哈希序列和所述第二哈希序列对应的上传结果;根据所述上传结果确定所述第一哈希序列和/或所述第二哈希序列的上传时间。

在一个示例性的实施例中,根据所述上传结果确定所述第一哈希序列和/或所述第二哈希序列的上传时间之后,上述方法还包括:比较所述上传时间与预设上链时间的大小;在所述上传时间小于等于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链成功;在所述上传时间大于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链失败。

可以理解的是,为了保证不同交换方对应的哈希序列可以在合约区块链上比对,在不同交换方将哈希序列上传之后,还以通过查询每一个哈希序列的上传结果,确定哈希序列是否上链成功,例如,在将第一哈希序列上传至合约区块链之后,在倒计时3秒之后,通过查询请求获取对应的上链结果确定第一哈希序列是否已经上链成功,在实际应用中,正常平均3秒可以上链成功,此外,当超过300秒还没有上链成功,可以重试上链,如果重试6次还是失败,可以发送告警提示人工干预,表名此时当前交换方与合约区块链之间的通信存在问题。

在一个示例性的实施例中,在所述上传时间大于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链失败之后,上述方法还包括:重新发起将所述第一哈希序列和/或所述第二哈希序列上传至所述合约区块链的上链流程,并记录重新发起上链流程的目标次数;在所述目标次数大于预设次数的情况下,生成告警提示信息,其中,所述告警提示信息用于提示目标对象对上链流程进行人工干预;在所述目标次数小于或等于预设次数的情况下,重复发起所述上链流程。

在一个示例性的实施例中,接收所述合约区块链发送的对账结果之后,上述方法还包括:从所述对账结果中提取目标字段对应的数值,其中,所述目标字段为在所述合约区块链的返回接口处预设的对账结果字段;在所述数值为第一值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中还未进行比对操作;在所述数值为第二值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账成功;在所述数值为第三值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账失败。

例如,上链成功后,需要通过查询分钟汇总hash的对账结果来获取链上分钟级汇总hash比对结果,通过接口返回的SumCheckResult.hashCheck得到对账结果,设定:0-还没有对账,1-对账成功,2-对账失败。如果该分钟对账成功(hashCheck=1-对账成功),则该分钟流程结束;如果该分钟对账失败(hashCheck=2-对账失败),则需要进一步比对,即进一步进行秒级的拆分汇总。若无需进行拆分,则该分钟内所有交易计算每个交易的明细hash并到智能合约上链。

在一个示例性的实施例中,在所述数值为第三值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账失败之后,上述方法还包括:确定引起所述对账失败的所述第一哈希序列对应的第一交换数据和所述第二哈希序列对应的第二交换数据;对所述第一交换数据与所述第二交换数据进行细粒度拆分,其中,所述细粒度拆分用于将不同交换时间点对应的时间划分粒度下调一级;根据细粒度拆分结果确定所述第一交换数据对应的第三哈希值序列以及所述第二交换数据对应的第四哈希值序列;将所述第三哈希值序列和所述第四哈希值序列上传至所述合约区块链进行重复比对操作。

在一个示例性的实施例中,接收所述合约区块链发送的对账结果之后,包括:将所述对账结果分别发送至所述第一交换方、所述第二交换方;在确定所述对账结果指示对账失败的情况下,指示所述第一交换方与所述第二交换方互相发送携带对账失败的交易报文,其中,所述交易报文用于提示不同的交换方对交换数据进行差错处理。

即在利用合约区块链自动进行对账失败的情况下,第一交换方和第二交换方自身比对差异订单,进行差错处理,该差异订单主要对象是支付系统中状态为“失败”的,但渠道状态为“成功”的订单。首次对账发现存在差异后,进行二次对账。仍存在差异的,进入人工干预等错账处理程序。

显然,上述所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。为了更好的理解上述方法,以下结合实施例对上述过程进行说明,但不用于限定本申请实施例的技术方案,具体地:

对账是为了保证账簿记录的真实性、完整性、准确性,在记账以后结账之前,定期或不定期地对有关数据进行的检查、核对。对账的内容主要包含账证核对、账账核对、账实核对、账表核对。本申请所描述的对账主要为跨支付实体(相当于上述实施中的交换方)的账账核对。可选的,上述跨支付实体可以为银行或者第三方支付公司。

作为一种可选的实施方式,传统对账包含对账文件取得、数据准备、对账、差错处理四个阶段。在传统对账方法中,一般会设计定时任务,每天固定的时间点触发定时调度,分别调用传统对账的四阶段程序来处理对账。也有的支付实体会主动的推送对账单,再通过http回调来触发对账流程。

对账文件取得阶段,一般根据对应支付系统的不同,对银联、支付宝、微信等多个渠道,针对不同的支付渠道的特点,进行针对性的数据处理并下载对账文件。此阶段主要处理不同下载方式、不同下载时间以及不同文件格式的对账文件。当前,大多数银行都要求接入方提供ftp服务,银行定时将对账单推送至接入方提供的ftp服务器;还有部分银行会提供基于ftp/http的对账单下载服务,以ftp方式为多。此外,网银的对账单比较特殊,一般都需要结算登录网银的后台管理系统中,手动下载,结算下载完对账单后在导入到对账系统。技术选型上,HTTP(S)用apache httpclient即可实现链接池和断点续传,FTP也可以使用Apache Commons Net API。两者需要设置重试次数和链接超时间。重试次数和间隔的设置需要谨慎,重试太频繁易消耗大量服务器资源,造成服务器异常;时间间隔太大,又会拖慢后续处理步骤。传统对账方法中,5~10分钟是一个常见的重试间隔区间。

在对账文件下载后,进入数据准备阶段。程序主要根据账务系统的数据处理要求处理对账文件,逐行解析入库,生成可供对账的数据。此外还要创建对账批次,一方面是为了防止重复对账,另一方面需要在对账结束的时候将对账的结果信息存储到批次中。数据准备阶段需要提取的主要信息有:商户订单号、交易流水号、交易时间、支付时间、付款方、交易金额、交易类型、交易状态等字段。此阶段的重点在于和渠道对账单原始数据、本地交易订单原始数据进行核对,保证数据的准确性。

对账阶段,需要对商户订单号、渠道流水号、交易时间、交易金额等字段进行比对,所有订单进行逐笔比对。

存在比对差异的,进入差错处理。比对差异的订单主要对象是支付系统中状态为“失败”的,但渠道状态为“成功”的订单。首次对账发现存在差异后,进行二次对账。仍存在差异的,进入人工干预等错账处理程序。

此外,由于新电子支付工具账本基础系统的应用,上述系统可以提供区块链币串表达式账本记账、币串储备库聚合统计等功能。该系统包含位于DMZ区的区块链节点设备及开放服务区的逻辑处理设备。由于区块链支付与传统支付的支付特性差异,导致面向传统支付的传统对账方法难以及时、准确、高效地捕捉和发现区块链支付双边账中的异常。

针对上述问题,本申请可选实施例提供一种基于区块链的可上链、可连续、可追踪等特性和针对区块链支付独有的处理模式的区块链对账方法。该方法在保证自身稳定性的基础上,可实现对账的异常高效捕捉、差异精准定位、错账快速报出等功能。

具体流程如图3所示,图3是根据本申请实施例的一种区块链对账方法的流程示意图,包括以下步骤:

步骤S302、收集明细流水,在交易终态时段结束。

可选的,每小时启动上个批次的对账,调度执行时间可设置为每小时25分,建议参与区块链对账的不同支付实体之间保持调度的一致性,从而保证对账的精确性。

步骤S304、计算不同支付实体对应的哈希值发起上链,上链失败重试,并告警;

可选的,获取支付实体在上一个对账批次内生成的所有交易信息,交易信息中包括多个交易报文,将一个批次的交易以交易报文内的业务处理时间字段分钟数相同的交易进行分片,也就是,比如一个批次的交易,业务处理时间为2021-09-08T10:00:00--2021-09-08T10:00:59的在分钟“00”,业务处理时间为2021-09-08T10:01:00--2021-09-08T10:01:59的在分钟“01”,以此类推,将每分钟划分为60个时间区间,并通过预设的区块链对账规则对每一个时间区间内的数据进行hash计算,确定该时间区间中所有数据对应的唯一哈希值,将60个时间区间对应的60个哈希值汇总,通过支付实体计算的分钟汇总hash(相当于上述实施例中的哈希序列)上传到区块链智能合约(相当于上述实施例中的合约区块链)上。

需要说明的是,为了保证不同的支付实体可以进行自动对账,因此需要保证在区块链智能合约上参与自动对账的支付实体使用相互约定好的hash计算方式,避免不同方式引起的异常情况。

步骤S306、确定不同支付实体的上链结果,等待对账,当不同支付实体的上链结果获取失败时,进行超时重试以及失败告警。

可选的,区块链智能合约上链分钟汇总hash后,需要定时3秒通过查询交易是否已经上链成功,正常平均3秒可以上链成功,如果超过300秒还没有上链成功,可以重试上链,如果重试6次还是失败,可以发送告警提示人工干预。上链成功后,需要通过查询分钟汇总hash的对账结果来获取链上分钟级汇总hash比对结果,通过接口返回的Sum CheckResult.Hash Check得到对账结果,设定:0-还没有对账,1-对账成功,2-对账失败。

需要说明的是,上述定时3秒以及重试6次是可以根据实际对账需求灵活调整的,上述仅仅是一种示例,并不对本申请起到限制作用。

步骤S308、处理对账结果。

根据返回对账结果的“hashCheck”字段判断步骤S306的分钟汇总hash对账结果,如果该分钟对账成功(hashCheck=1-对账成功),则该分钟流程结束;如果该分钟对账失败(hashCheck=2-对账失败),则需要进一步比对,即进一步进行秒级的拆分汇总。若无需进行拆分,则该分钟内所有交易计算每个交易的明细hash并到智能合约上链。若需要进行按秒汇总,也就是,比如一分钟内的交易,以交易报文内的“业务处理时间字段”作分片,相同秒的交易作为一片,“业务处理时间字段”为2021-09-08T10:00:00的所有交易在秒“00”,业务处理时间为2021-09-08T10:00:01的在秒“01”,如此类推。继而可以在之前分钟粒度的基础上进行秒粒度的划分,从而可以更好的确定出现对账异常的数据。

也就是说,假如本次对账初始使用“分钟汇总”对应的哈希序列进行对账,当分钟对账不平时,将存在异常的部分使用“秒级汇总”重新进行对账,如果秒级对账不平,则近一步进行“秒级明细”,使得在自动对账的同时,可以快速确定出交易信息中存在的异常交易。

步骤S310、假如“分钟汇总”对账成功,确定分钟对账结束。

需要说明的是,交易明细hash都上链后,各参与区块链对账的支付实体会从链上获取对账结果,然后互相发送对账失败的交易报文,提示对方进行差错处理,使得支付实体可以对没有完成对账或者发现对账有异常的批次进行人工重启对账,从而保证全部交易明细均可完成对账。可选的,上述交易hash上链后,获取对账结果、发送失败交易报文也可以通过文件推送等形式实现。

综上,通过上述实施方式,使用区块链技术实现跨支付实体的对账,相比于传统对账方法对数据库读写依赖小,对账更高效、对服务器及数据库资源消耗更低,且上述区块链对账方法具有高可扩展性、高可维护性、高容量规划有效性。比传统对账方法准确性更高,对差错账具有高效捕捉和精准定位的能力,且对账粒度可以精细到分钟级甚至秒级,是传统对账方法难以比拟的,降低了对账成本。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。

在本实施例中还提供了一种对账结果的接收装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的设备较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图4是根据本申请实施例的对账结果的接收装置的结构框图(一),该装置包括:

生成模块42,用于根据第一交换方在不同交换时间点的交换数据和预设的区块链对账规则生成第一哈希序列,以及根据所述区块链对账规则和第二交换方在所述不同交换时间点的交换数据生成第二哈希序列;

发送模块44,用于将所述第一哈希序列和所述第二哈希序列发送至合约区块链,以指示所述合约区块链比较相同交换时间点对应的第一哈希序列和第二哈希序列,得到对账结果;

接收模块46,用于接收所述合约区块链发送的对账结果。

通过上述装置,在获取到不同交换方生成的交换数据之后,可以基于预设的区块链对账规则根据不同交换数据出现的交换时间点将交换数据转换为对应的哈希序列,继而通过在合约区块链中比较相同交换时间点对应至少两个交换方上传的自身哈希序列,对至少两个交换方进行对账,并获取合约区块链最终输出的对账结果,从而提升不同交换方进行对账的效率,解决了相关技术对不同交换方之间进行对账的过程复杂,对账成本高,且对账效率低下的问题。

作为一种可选的实施方式,图5是根据本申请实施例的对账结果的接收装置的结构框图(二),不仅包括上述图4中的所有模块,还包括:第一确定模块50、第二确定模块52、指示模块54。

在一个示例性的实施例中,上述装置还包括:第一确定模块,用于在预设定时之后获取所述第一哈希序列和所述第二哈希序列对应的上传结果;根据所述上传结果确定所述第一哈希序列和/或所述第二哈希序列的上传时间。

在一个示例性的实施例中,上述确定模块还包括:比较单元,用于根据所述上传结果确定所述第一哈希序列和/或所述第二哈希序列的上传时间之后,比较所述上传时间与预设上链时间的大小;在所述上传时间小于等于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链成功;在所述上传时间大于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链失败。

在一个示例性的实施例中,上述确定模块还包括:记录单元,用于在所述上传时间大于所述预设上链时间的情况下,确定所述第一哈希序列和/或所述第二哈希序列上链失败之后,重新发起将所述第一哈希序列和/或所述第二哈希序列上传至所述合约区块链的上链流程,并记录重新发起上链流程的目标次数;在所述目标次数大于预设次数的情况下,生成告警提示信息,其中,所述告警提示信息用于提示目标对象对上链流程进行人工干预;在所述目标次数小于或等于预设次数的情况下,重复发起所述上链流程。

在一个示例性的实施例中,上述装置还包括:第二确定模块,用于接收所述合约区块链发送的对账结果之后,从所述对账结果中提取目标字段对应的数值,其中,所述目标字段为在所述合约区块链的返回接口处预设的对账结果字段;在所述数值为第一值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中还未进行比对操作;在所述数值为第二值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账成功;在所述数值为第三值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账失败。

在一个示例性的实施例中,上述第二确定模块,还包括:拆分单元,用于在所述数值为第三值的情况下,确定所述第一哈希序列和所述第二哈希序列在所述合约区块链中已完成比对操作,且所述对账结果为对账失败之后,确定引起所述对账失败的所述第一哈希序列对应的第一交换数据和所述第二哈希序列对应的第二交换数据;对所述第一交换数据与所述第二交换数据进行细粒度拆分,其中,所述细粒度拆分用于将不同交换时间点对应的时间划分粒度下调一级;根据细粒度拆分结果确定所述第一交换数据对应的第三哈希值序列以及所述第二交换数据对应的第四哈希值序列;将所述第三哈希值序列和所述第四哈希值序列上传至所述合约区块链进行重复比对操作。

在一个示例性的实施例中,上述装置还包括:指示模块,用于接收所述合约区块链发送的对账结果之后,将所述对账结果分别发送至所述第一交换方、所述第二交换方;在确定所述对账结果指示对账失败的情况下,指示所述第一交换方与所述第二交换方互相发送携带对账失败的交易报文,其中,所述交易报文用于提示不同的交换方对交换数据进行差错处理。

本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

S1,根据第一交换方在不同交换时间点的交换数据和预设的区块链对账规则生成第一哈希序列,以及根据所述区块链对账规则和第二交换方在所述不同交换时间点的交换数据生成第二哈希序列;

S2,将所述第一哈希序列和所述第二哈希序列发送至合约区块链,以指示所述合约区块链比较相同交换时间点对应的第一哈希序列和第二哈希序列,得到对账结果;

S3,接收所述合约区块链发送的对账结果。

在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。

本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

S1,根据第一交换方在不同交换时间点的交换数据和预设的区块链对账规则生成第一哈希序列,以及根据所述区块链对账规则和第二交换方在所述不同交换时间点的交换数据生成第二哈希序列;

S2,将所述第一哈希序列和所述第二哈希序列发送至合约区块链,以指示所述合约区块链比较相同交换时间点对应的第一哈希序列和第二哈希序列,得到对账结果;

S3,接收所述合约区块链发送的对账结果。

在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

相关技术
  • 表情接收方法、装置、电子设备及存储介质
  • 区块链对账方法、装置、设备及存储介质
  • 对账方法、装置、计算机设备和存储介质
  • 语音遥控装置装置及方法、存储介质、电子装置
  • RFID接收电路及存储介质、电子装置
  • 对账结果数据的通知方法、装置、电子装置及存储介质
  • 数据的对账方法、装置及系统、存储介质、电子装置
技术分类

06120116511139