一种计算机执行的交易处理方法和装置
技术领域
本公开涉及支付技术领域,特别涉及一种计算机执行的交易处理方法和装置。
背景技术
有一种交易可以称为资金流出型交易,这类交易可以是只有资金流出(如提现),或者,可以是既有资金流入也有资金流出,但是流出大于流入(如解冻并提现)。缓冲记账是一种账务记账方式,特点是先记录明细,再通过后台异步的方式每分钟统计一次更新余额,达到提高账户并发操作能力的目的。当上述的资金流出型交易采取了该缓冲记账模式,同时出现热点情况时,比如,所述的热点可以是账户记账时单位时间记账请求过大造成的热点现象,就有可能会出现“透支”。所述的透支即账户记账完毕后账户可用余额小于0。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种计算机执行的交易处理方法和装置,以降低资金的透支风险。
具体地,本说明书一个或多个实施例是通过如下技术方案实现的:
第一方面,提供一种计算机执行的交易处理方法,所述方法包括:
接收一笔交易请求,所述交易请求用于请求由目标账户中流出资金;
将本次交易请求流出的资金金额与待补账的流出资金金额相加,得到流出资金和;
若所述流出资金和在资金控制阈值的范围内,继续执行本次交易;否则,拒绝本次交易;所述资金控制阈值是根据所述目标账户的历史资金流出数据得到的安全金额。
第二方面,提供一种计算机执行的交易处理装置,所述装置包括:
请求接收模块,用于接收一笔交易请求,所述交易请求用于请求由目标账户中流出资金;
数据处理模块,用于将本次交易请求流出的资金金额与待补账的流出资金金额相加,得到流出资金和;
校验处理模块,用于若所述流出资金和在资金控制阈值的范围内,继续执行本次交易;否则,拒绝本次交易;所述资金控制阈值是根据所述目标账户的历史资金流出数据得到的安全金额。
第三方面,提供一种交易处理设备,所述设备包括存储器、处理器,以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行指令时实现以下步骤:
接收一笔交易请求,所述交易请求用于请求由目标账户中流出资金;
将本次交易请求流出的资金金额与待补账的流出资金金额相加,得到流出资金和;
若所述流出资金和在资金控制阈值的范围内,继续执行本次交易;否则,拒绝本次交易;所述资金控制阈值是根据所述目标账户的历史资金流出数据得到的安全金额。
本说明书一个或多个实施例的计算机执行的交易处理方法和装置,通过由资金控制阈值来控制,当流出资金和小于或等于资金控制阈值时才允许继续执行交易,使得可以降低资金的透支风险。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的一种交易处理系统架构;
图2为本说明书一个或多个实施例提供的一种计算资金控制阈值的方法;
图3为本说明书一个或多个实施例提供的一种交易处理方法的流程;
图4为本说明书一个或多个实施例提供的一种缓冲记账启用流程图;
图5为本说明书一个或多个实施例提供的一种计算机执行的交易处理装置。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
资金流出型交易容易出现资金透支现象,尤其对于账户热点的资金流出型交易。举例来说:在某个时间段内,对于账户A的资金流出请求过多,例如,多次频繁的请求对该账户A进行提现。而由于请求过于频繁,账户A的余额来不及更新,导致不能准确判断是否造成余额超支。而如果对每次的提现请求都允许,可能会出现最后补账时,发现余额透支。这笔透支的资金如果追不回来就会造成资损。因此,应尽量避免资金透支。
本说明书至少一个实施例提供了一种交易处理方法,该方法可以应用于对资金流出型交易控制透支风险。该方法可以应用于多种场景,例如,账户记账、红包发放等,只要涉及到资金流出,就可以用于防止资金透支。其中,在账户记账的场景中,对于分布式事务(可以通过两阶段来保证事务的最终一致性,一阶段用来做资金预处理,二阶段最终提交)涉及的记账请求,例如可以包括充值、充值并冻结、解冻并流出等业务的记账。
图1示例了应用本交易处理方法的交易处理系统架构,如图1所示,该交易处理系统可以包括:业务处理模块11和阈值计算模块12。其中,业务处理模块11可以负责接收请求流出资金的交易请求,并处理该交易请求,而阈值计算模块12可以用于计算资金控制阈值,并将该资金控制阈值发送给业务处理模块11使用,以供业务处理模块11通过该资金控制阈值控制资金透支的风险。
图2示例了阈值计算模块12计算资金控制阈值的一种方式,可以包括:
在步骤200中,对于一个控制时间段,分别获取所述目标账户在所述控制时间段的各个单位时间内的历史资金流出数据。
考虑到流出资金的请求的流量是动态变化的,比如,有的时段请求量较多,而有的时段请求量相对较少,可以对不同的时段使用不同的资金控制阈值,以使得风险的控制更加准确。
例如,可以是每小时具有一个对应的资金控制阈值,在8~9点的一小时内,以资金控制阈值G1进行控制,在9~10点的一小时内,以另一个资金控制阈值G2进行控制。所述的每小时可以称为控制时间段,则G1对应的控制时间段是8~9点的一小时,G2对应的控制时间段是9~10点的一小时。
本步骤中,对于一个控制时间段,获取该控制时间段对应的资金控制阈值时,可以分别获取目标账户在所述控制时间段的各个单位时间内的历史资金流出数据。其中,一个控制时间段可以包括多个单位时间,所述单位时间是补账间隔时间。例如,假设一分钟补账一次,补账间隔时间即为一分钟,而当一个控制时间段是1小时时,该控制时间段包括60个单位时间(60分钟),可以分别获取该60个单位时间内的历史资金流出数据。
例如,以8~9点的一小时为例,该一小时包括60分钟,每一分钟都可以得到一个历史资金流出数据,该历史资金流出数据是这一分钟内的流出资金总和。那么,总共可以得到60个流出资金总和。
在步骤202中,确定历史资金流出数据的最大值。
本步骤中,可以得到上述60个流出资金总和中的最大值。
在步骤204中,根据最大值,确定所述控制时间段对应的资金控制阈值。
所述的根据最大值确定资金控制阈值的方式,包括但不限于如下两种:例如,可以将上述的最大值,确定为资金控制阈值。又例如,还可以在该最大值的基础上,加上保护资金资金,最终得到资金控制阈值。
在得到资金控制阈值后,阈值计算模块12可以将该阈值发送至业务处理模块11,业务处理模块11可以根据该阈值进行透支风险控制。参见图3,图3示例了一种交易处理方法,可以包括:
在步骤300中,接收一笔交易请求,所述交易请求用于请求由目标账户中流出资金。
例如,该交易请求被图1中的业务处理模块11接收。该交易请求可以是请求由目标账户中流出资金,比如,请求由账户A中提取现金4元,则该账户A可以称为目标账户。
在步骤302中,将本次交易请求流出的资金金额与待补账的流出资金金额相加,得到流出资金和。
本步骤中,所述的待补账的流出资金金额可以是还尚未更新资金余额的部分,比如,在本次交易请求之前,请求方还由账户A中提取了两次现金,一次提取了6元,一次提取了8元,但是并没有更新余额,即没有由账户A中的余额中减掉这些金额,那么这些已经取出但尚未由账户余额中更新的资金可以称为待补账的流出资金金额。可以将待补账的流出资金金额与本次交易请求流出的资金金额相加,即可得到流出资金和。
例如,假设t1时刻由账户A取现流出资金6元,t2时刻由账户A取现流出资金8元,接着是本次交易请求,对应请求的流出资金金额是4元。那么,6+8+4=18元,该18元即为流出资金和。
在步骤304中,判断流出资金和是否在资金控制阈值的范围内。
本步骤可以判断步骤302中得到的流出资金和是否在资金控制阈值的范围内,其中,资金控制阈值可以是根据目标账户的历史资金流出数据得到的安全金额。举例如下:假如在20号那一天的24小时中,以补账间隔时间是一分钟为例,每一分钟进行一次账户补账,即每一分钟进行一次账户余额的更新,而在该一分钟内可以发生多次的资金流出请求。根据图2中描述的资金控制阈值的计算方法,可以得到每一小时中的单位时间内的历史资金流出数据的最大值,并根据该最大值得到资金控制阈值。也即,根据该资金控制阈值,如果在单位时间内,请求流出的资金总和在该资金控制阈值的范围内(比如,小于或等于该资金控制阈值),就可以确定账户余额是安全的,不会出现透支。
可以根据20号的9点~10点对应的资金控制阈值控制21号的9点~10点的交易请求,例如,如果在21号的9点~10点接收到一笔交易请求,该请求所在的单位时间内,如果请求流出的资金总和在资金控制阈值的范围内,就可以认为账户是安全的,不会出现透支风险。当然,上述的每小时作为一个控制时间段,且由相邻天的相邻时间段的资金控制阈值进行对应控制,只是一种示例的控制方式,实际实施例中并不局限于此,只要根据目标账户的历史资金流出数据得到一个用于控制的安全金额即可。
若判断结果为是,则继续执行步骤306;否则,执行步骤308。
在步骤306中,继续执行本次交易。
若步骤304的资金控制阈值的校验通过,表明此时账户余额是安全的,不会出现透支风险,接着可以继续执行交易。所述的交易例如可以是提现。
此外,步骤304的阈值校验通过,也可以触发记账模式由普通记账向缓冲记账的模式自动转换。比如,假设业务处理模块11在接收到资金流出型交易请求时,如果没有预先配置采用缓冲记账,默认采用普通记账,比如,每一笔交易请求都更新余额。而如果阈值校验通过,表明该账户的资金余额安全,则可以自动转换成缓冲记账模式,以提高并发量,增强系统吞吐能力。
所述的缓冲记账可以是,在记账阶段,对于记账请求处理时不会锁账户,也不会更新余额,直接记录这一笔交易的明细到日志表;在补账阶段,后台定时任务循环捞取日志表数据,按照账户维度捞取一段时间的明细,批量汇总这一段时间的明细获取汇总后的余额更新到账户上。
在步骤308中,拒绝本次交易。例如,拒绝由账户提现。
如上面提到过的,账户透支风险可能会出现在资金流出型交易的热点账户上,例如,某个账户在补账间隔时间内出现了频繁的多次资金流出请求,账户余额不能及时更新,就可能会出现资金透支。
在一个例子中,业务处理模块11在接收到一个交易请求后:
可以先判断下是否是资金流出型交易,如果否,则可以使用普通业务处理逻辑。如果判断结果是资金流出型交易,在请求由账户中流出资金,则可以继续判断是否预先配置了缓冲记账模式。
如果已经预先配置了缓冲记账模式,可以继续按照缓冲记账模式处理。如果没有预先配置缓冲记账模式,则可以继续判断本次交易请求的目标账户是否是一个热点账户。实际业务运行期间,可以是只有部分业务由于业务属性原因能够导致账户热点(如担保交易),而对于某些业务(如转账)等,无法达到热点。因此,所述的判断热点账户也可以认为是在判断热点业务。
如果不是热点账户,可以按照普通记账模式;如果判断结果是热点账户,那就存在账户余额超支的风险。此时,一方面,目标账户是热点账户,表明单位时间内的交易请求比较频繁请求量较大,另一方面,又具有账户超支的风险,如何兼顾这两个方面,既提升系统的吞吐能力,又避免超支风险,则可以使用图3中所示的方法,对该账户进行资金控制阈值的校验。如果校验通过了,表明该账户余额是安全的,可以自动转换成缓冲记账,从而既提升系统的吞吐能力又同时保证账户安全。
在另一个例子中,判断本次交易请求的目标账户是否是一个热点账户时,可以是锁账号固定时间,如果锁不到账号则确定是热点。但是,为了提高热点识别的效率,进一步提升系统吞吐量,可以设置白名单,白名单中的业务标识对应的业务是出现过账户热点现象的业务,根据该白名单快速识别热点。
例如,可以通过对数据的实时清洗,清洗近一段时间数据得出哪个业务发生过账户热点现象,就将该业务标识加入白名单中。例如,白名单中的数据格式可以是:10304&301380(确认收货解冻并流出的业务)、或者600101&301201(某某业务流入并收费的业务)。
请结合图4所示的流程,参见白名单的利用,可以包括:
在步骤400中,接收一笔交易请求。
例如,所述交易请求用于请求由目标账户中流出资金。
在步骤402中,确定该请求是资金流出型交易请求。
例如,如果不是资金流出型交易请求,可以按照普通业务逻辑处理,比如,可以不采用缓冲记账,而是每笔交易都更新余额。
在步骤404中,确定该请求没有预配置缓冲记账。
例如,如果已经预配置了缓冲记账,可以按照缓冲记账执行。
在步骤406中,获取交易请求中携带的业务标识。
例如,交易请求中携带业务标识,以用于识别业务。
在步骤408中,若所述业务标识在预设的白名单中,对所述交易请求的目标账户进行账号加锁处理。
例如,如果业务标识在白名单中,可以采用Nowait加锁模式,即不需要再锁账号固定时间(如,3s)才判断出是否热点,而是可以立刻进行一次加锁,如果锁不到就认为是热点账号。如果业务标识不在白名单,则该业务不是热点,可以按照普通业务逻辑处理。
在步骤410中,确认所述交易加锁处理失败,确认是热点。
如果确认是热点,则继续进行步骤412的阈值校验。如果确定不是热点,可以按照普通业务逻辑处理,比如,可以不采用缓冲记账,而是锁账号记账,且每笔交易都更新余额。
在步骤412中,阈值校验,且确认阈值校验通过。
例如,如果阈值校验不通过,则不能启用缓冲记账,按照普通业务逻辑。
在步骤414中,启用缓冲记账模式。
通过白名单的设置,可以加快热点的识别,并且还启用了nowait热点识别,更加快速的启用缓冲记账,进一步提升了系统吞吐量
此外,本说明书至少一个实施例中的资金控制阈值可以更新和调整,以使得风险控制更加准确。比如,如果阈值校验失败,流出资金和不在资金控制阈值的范围内,可以记录本次失败。当失败次数达到预定次数阈值时,阈值计算模块12可以更新调整所述资金控制阈值。所述的更新调整所述资金控制阈值,例如,可以是获取最新的采集历史数据,重新计算一个新的资金控制阈值。
比如,在计算资金控制阈值时,可以按照图2所示的资金控制阈值的计算方式,离线计算近一个月或者近一年中每天的8点至9点时间段对应的资金控制阈值,并可以将这些计算得到的每天的资金控制阈值计算平均值(也可以采用其他计算方式)作为最终线上采用的资金控制阈值。而在触发重新计算资金控制阈值进行阈值调整时,可以获取的最新采集历史数据可以是昨天的8点至9点时间段对应的资金控制阈值,或者也可以是当前时间点的上一个小时对应的资金控制阈值。
又例如,还可以是调整计算资金控制阈值的算法,用新的算法再计算资金控制阈值。例如,资金控制阈值的计算算法在调整时,可以调整算法公式中的参数。更新的资金控制阈值可以再反馈给业务处理模块11使用。
此外,资金控制阈值的调整主要是有时该阈值可能不太准确,比如,本来一次交易请求流出资金后,余额不会成为负值,可是由于资金控制阈值计算的不太准确,导致仍然拒绝本次交易,那就影响到业务的正常进行。因此,可以通过一定的措施触发资金控制阈值的调整,通过调整更新资金控制阈值,使得阈值越来越准确,可以形成闭环反馈。
本说明书至少一个实施例的交易处理方法,针对提前清洗的白名单资金流不锁账号进行缓冲记账处理,并通过资金控制阈值的计算可以较好的控制透支风险,同时通过实时调整可以对资金控制阈值进行更新和修正,从而形成了闭环。本方案具有通用性,能够在所有账务系统或者类似的具有热点问题的资金流出系统中进行使用。
此外,对特殊的热点资金流配置白名单控制,限制了透支可能发生的范围,降低了影响,业务风险可控。而且,本方案则不需要缓冲配置,根据白名单自动识别业务自动转换为缓冲记账模式,能够做到单笔高可用能力。缓冲记账模式不锁账号也大大提升了系统吞吐能力。
图5提供了一种计算机执行的交易处理装置,如图5所示,该装置可以包括:请求接收模块51、数据处理模块52和校验处理模块53。这些模块可以相当于是包括在图1中的业务处理模块中。
请求接收模块51,用于接收一笔交易请求,所述交易请求用于请求由目标账户中流出资金;
数据处理模块52,用于将本次交易请求流出的资金金额与待补账的流出资金金额相加,得到流出资金和;
校验处理模块53,用于若所述流出资金和在资金控制阈值的范围内,继续执行本次交易;否则,拒绝本次交易;所述资金控制阈值是根据所述目标账户的历史资金流出数据得到的安全金额。
在一个例子中,该装置还可以包括:阈值计算模块,用于对于一个控制时间段,分别获取所述目标账户在所述控制时间段的各个单位时间内的历史资金流出数据,并确定历史资金流出数据的最大值;对于一个控制时间段,分别获取所述目标账户在所述控制时间段的各个单位时间内的历史资金流出数据,并确定历史资金流出数据的最大值;所述资金控制阈值对应的一个控制时间段包括多个单位时间,所述单位时间是补账间隔时间。该阈值计算模块相当于图1中的阈值计算模块12。
在一个例子中,该装置还可以包括热点识别模块(未示出),用于获取所述交易请求中携带的业务标识;若所述业务标识在预设的白名单中,对所述交易请求的目标账户进行账号加锁处理,当所述交易加锁处理失败时,确认所述目标账户是热点账户;所述白名单中的业务标识对应的业务出现过账户热点现象。
在一个例子中,所述校验处理模块53,还用于在流出资金和在资金控制阈值的范围内时,对本次交易请求的流出资金进行缓冲记账模式处理。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述图中所示流程中的各个步骤,其执行顺序不限制于流程图中的顺序。此外,各个步骤的描述,可以实现为软件、硬件或者其结合的形式,例如,本领域技术人员可以将其实现为软件代码的形式,可以为能够实现所述步骤对应的逻辑功能的计算机可执行指令。当其以软件的方式实现时,所述的可执行指令可以存储在存储器中,并被设备中的处理器执行。
例如,对应于上述方法,本说明书一个或多个实施例同时提供一种交易处理设备。该设备可以包括处理器、存储器、以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器通过执行所述指令,用于实现如下步骤:
接收一笔交易请求,所述交易请求用于请求由目标账户中流出资金;
将本次交易请求流出的资金金额与待补账的流出资金金额相加,得到流出资金和;
若所述流出资金和在资金控制阈值的范围内,继续执行本次交易;否则,拒绝本次交易;所述资金控制阈值是根据所述目标账户的历史资金流出数据得到的安全金额。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。