一种银行业务信息的主动通知系统及主动通知方法
技术领域
本发明涉及信息通知领域,具体涉及一种银行业务信息的主动通知系统及主动通知方法。
背景技术
银行企业直连系统(简称银企直连)是实现与企业财务/ERP/电子商务交易平台等系统(以下简称支付业务平台)平滑对接和有机融合的银行子系统。银企直连主要提供两种方式与支付业务平台对接,一种是前置机式,一种是嵌入式。前置机式即银行提供专门的Http(s),Socket服务程序,实现与银行的直连;嵌入式即银行提供开发API,调用其API来实现与银行进行交互。
传统的银行接口调用方式是同步的通信方式,可参见图1,调用银行API接口之后,等待返回数据或处理结果,但是在通常的业务当中,往往需要银行主动提醒账户变动通知或者某个操作结果通知,目前由于银行系统问题,银行很难提供一个灵活的接口来实现该功能。
发明内容
本发明提供了一种银行业务信息的主动通知系统及主动通知方法,解决了在与银行进行业务交互的过程中,无法及时从银行侧主动获取业务操作信息的问题。
本发明解决上述技术问题的技术方案如下:
本发明提供了一种银行业务信息的主动通知系统,包括多个应用服务器和支付业务平台,所述支付业务平台至少包括支付网关服务器、消息服务器和数据库服务器;
所述支付网关服务器,用于接收至少一个业务事件请求,并通过银行报文解析API将所述业务事件请求提交给银行核心系统;以及用于接收银行核心系统返回的与所述业务事件请求相关的银行业务信息;还用于从所述数据库服务器中获取银行业务信息,并根据银行业务信息,生成对应的消息通知事件;
所述数据库服务器,用于存储所述返回的与所述业务事件请求相关的银行业务信息;
所述消息服务器,用于存储所述支付网关服务器生成的消息通知事件;
所述应用服务器,用于主动监听所述消息服务器中的消息通知事件并接收和处理该消息通知事件。
在上述技术方案的基础上,本发明还可以作如下改进。
进一步的,所述支付网关服务器中具有多种不同类型的线程池,分别为至少一个请求处理线程池、一个请求分发线程池和至少一个报文发送/接收线程池;
所述请求处理线程池,用于当接收到业务事件请求时,将业务事件请求放入请求队列中;
所述请求分发线程池,用于定时从所述请求队列中读取业务事件请求,并传输给报文发送/接收线程池;
所述报文发送/接收线程池,用于将业务事件请求通过银行报文解析API提交给银行核心系统,并接收银行核心系统返回的对应的银行业务信息,放入结果队列中。
进一步的,所述请求处理线程池的数量根据支付网关服务器的登录账户数量确定,所述报文发送/接收线程池的数量根据具体需求设定。
进一步的,所述银行业务信息包括来账流水信息和操作结果信息。
进一步的,当所述银行业务信息为来账流水信息时,所述支付网关服务器中还包括至少一个来账流水查询常驻线程和一个入账查询常驻线程;
所述来账流水查询常驻线程,用于按照预定时间间隔从银行核心系统中查询指定账户的来账流水信息,并更新至数据库服务器的来账流水数据表中;
所述入账查询常驻线程,用于从所述来账流水数据表中查询来账流水信息,并将新增的来账流水信息插入数据库服务器的入账管理表中;还用于将所述新增的来账流水信息以账户为单位生成独立的账户来账事件,并将账户来账事件生成消息通知事件发送到消息服务器;
所述来账流水查询常驻线程的数量根据登录支付网关服务器的账户数量确定。
进一步的,当所述银行业务信息为操作结果信息时,所述支付网关服务器还包括至少一个支付业务操作线程、至少一个操作结果查询线程和一个操作结果分发查询常驻线程;
所述支付业务操作线程,用于根据业务事件请求,调用银行报文解析API,进行相应的支付业务操作,并将支付业务操作后返回的操作结果存储至数据库服务器中的操作结果表中;
所述操作结果分发查询常驻线程,用于从所述操作结果表中查询未完成等待银行处理的操作记录,并将未完成等待银行处理的操作记录分发给操作结果查询线程;以及还用于将操作结果查询线程传输的下一步的操作结果按照业务标识ID生成独立的操作结果通知事件,并将业务的操作结果通知事件生成消息通知事件发送到消息服务器;
所述操作结果查询线程,用于根据所述操作结果分发查询常驻线程分发的未完成等待银行处理的操作记录,通过银行报文解析API从银行核心系统中查询对应的下一步的操作结果,并将接收的银行核心系统返回的下一步的操作结果传输至操作结果分发查询常驻线程。
为了解决本发明的技术问题,本发明还提供了一种银行业务信息的主动通知方法,包括以下步骤:
S1,支付网关服务器通过银行报文解析API将接收的至少一个业务事件请求转发给银行核心系统,并接收银行核心系统返回的与所述业务事件请求相关的银行业务信息,并将银行业务信息存储至数据库服务器;
S2,支付网关服务器从数据库服务器中读取银行业务信息,并根据所述银行业务信息生成消息通知事件,发送至消息服务器进行存储;
S3,应用服务器主动监听消息服务器中的消息通知事件,当监听到消息通知事件时,接收并处理该消息通知事件。
在上述技术方案的基础上,本发明还可以作如下改进。
进一步的,所述银行业务信息包括来账流水信息和操作结果信息。
进一步的,当银行业务信息为来账流水信息时,支付网关服务器包括至少一个来账流水查询常驻线程和一个入账查询常驻线程,步骤S1具体包括:
S11a,来账流水查询常驻线程按照预定时间间隔从银行核心系统中查询指定账户的来账流水信息,并更新至数据库服务器的来账流水数据表中;
S12a,入账查询常驻线程从所述来账流水数据表中查询来账流水信息,并将新增的来账流水信息插入数据库服务器的入账管理表中;
步骤S2具体包括:
入账查询常驻线程将所述新增的来账流水信息以账户为单位生成独立的账户来账事件,并将账户来账事件生成消息通知事件发送到消息服务器。
进一步的,当所述银行业务信息为操作结果信息时,所述支付网关服务器中包括至少一个支付业务操作线程、至少一个操作结果查询线程和一个操作结果分发查询常驻线程,步骤S1具体包括:
S11b,支付业务操作线程根据业务事件请求,调用银行报文解析API,进行相应的支付业务操作,并将支付业务操作后返回的操作结果存储至数据库服务器中的操作结果表中;
S12b,操作结果分发查询常驻线程从所述操作结果表中查询未完成等待银行处理的操作记录,并将未完成等待银行处理的操作记录分发给操作结果查询线程;
S13b,所述操作结果查询线程根据所述操作结果分发查询常驻线程分发的未完成等待银行处理的操作记录,通过银行报文解析API从银行核心系统中查询对应的下一步的操作结果,并将接收的银行核心系统返回的下一步的操作结果传输至操作结果分发查询常驻线程;
步骤S2具体包括:
操作结果分发查询常驻线程将操作结果查询线程传输的下一步的操作结果按照业务标识ID生成独立的操作结果通知事件,并将业务的操作结果通知事件生成消息通知事件发送到消息服务器。
本发明的有益效果为:提供了一个支付业务平台,能够从银行核心系统中主动获取银行来账流水信息和银行业务操作结果信息,并能够独立的保存来账流水、来账明细以及业务操作结果,且及时生成消息通知事件保存于消息服务器中,应用服务器主动监听消息服务器,实现了银行来账自动通知,以及银行的操作结果,包括中间操作结果和最终操作结果(最终操作结果包括操作成功结果和操作失败结果)能主动通知的目的。
附图说明
图1为现有技术的银行接口调用方式示意图;
图2为本发明实施例1的一种银行业务信息的主动通知系统框架图;
图3为实施例1中支付业务平台与银行核心系统的整体业务交互过程示意图;
图4为实施例1的银行来账流水主动通知过程示意图;
图5为实施例1的银行业务操作结果主动通知过程示意图;
图6为本发明实施例2的一种银行业务信息的主动通知方法流程图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例1、一种银行业务信息的主动通知系统。
参见图2,本实施例提供的主动通知系统包括多个应用服务器和支付业务平台,所述支付业务平台至少包括支付网关服务器、消息服务器和数据库服务器;
所述支付网关服务器,用于接收至少一个业务事件请求,并通过银行报文解析API(ApplicationProgrammingInterface,应用程序编程接口)将所述业务事件请求提交给银行核心系统;以及用于接收银行核心系统返回的与所述业务事件请求相关的银行业务信息;还用于从所述数据库服务器中获取银行业务信息,并根据银行业务信息,生成对应的消息通知事件;
所述数据库服务器,用于存储所述返回的与所述业务事件请求相关的银行业务信息;
所述消息服务器,用于存储所述支付网关服务器生成的消息通知事件;
所述应用服务器,用于主动监听所述消息服务器中的消息通知事件并接收和处理该消息通知事件。
具体的,支付业务平台与银行核心系统的业务交互的整体过程可参见图3所示,支付业务平台中的支付网关服务器中具有多种不同类型的线程池,分别为至少一个请求处理线程池、一个请求分发线程池和至少一个报文发送/接收线程池;
当支付网关服务器接收到来自多个登录账户的业务事件请求时,每一个登录账户对应一个请求处理线程池,所述请求处理线程池的数量根据支付网关服务器的登录账户数量确定,当登录支付网关服务器的账户数量很多时,请求处理线程池的数量也相对多一些,反之,请求处理线程池的数量也相对少一些。这多个请求处理线程池将接收到的多个业务事件请求放入请求队列中。这样,对于多个登录账户同时发送的业务事件请求,采用多个请求处理线程池来处理,增加了请求处理速度,增加了并行处理能力。
所述请求分发线程池,用于定时从所述请求队列中读取业务事件请求,并传输给报文发送/接收线程池,比如,请求分发线程池每一次从请求队列中读写10条业务事件请求,传输给报文发送/接收线程池;
所述报文发送/接收线程池,用于将业务事件请求通过银行报文解析API提交给银行核心系统,并接收银行核心系统返回的对应的银行业务信息,放入结果队列中。在本实施例中,所述报文发送/接收线程池的数量根据具体需求设定,如上,一次有10条业务事件请求传输至报文发送/接收线程池,因此,需要10个报文发送/接收线程池将对应的业务事件请求通过银行报文解析API提交给银行核心系统。其中,报文发送/接收线程池可通过银行解析API先访问银企前置机(即Web Servlet容器),再通过银企前置机访问银行核心系统。
下面以两个具体的例子来说明本实施例提供的银行业务信息的主动通知系统。本实施例中银行业务信息主要包括银行来账流水信息和业务操作结果信息。参见图4,当所述银行业务信息为来账流水信息时,所述支付网关服务器中还包括至少一个来账流水查询常驻线程和一个入账查询常驻线程;
所述来账流水查询常驻线程,用于按照预定时间间隔从银行核心系统中查询指定账户的来账流水信息,并更新至数据库服务器的来账流水数据表中,其中,来账流水查询常驻线程根据登录支付网关服务器的账户数量确定;
所述入账查询常驻线程,用于从所述来账流水数据表中查询来账流水信息,并将新增的来账流水信息插入数据库服务器的入账管理表中;还用于将所述新增的来账流水信息以账户为单位生成独立的账户来账事件,并将账户来账事件生成消息通知事件发送到消息服务器;其中,所述来账流水查询常驻线程的数量根据登录支付网关服务器的账户数量确定。
参见图5,当银行业务信息为业务操作结果信息时,所述支付网关服务器还包括至少一个支付业务操作线程、至少一个操作结果查询线程和一个操作结果分发查询常驻线程;
所述支付业务操作线程,用于根据业务事件请求,调用银行报文解析API,进行相应的支付业务操作,并将支付业务操作后返回的操作结果存储至数据库服务器中的操作结果表中;
所述操作结果分发查询常驻线程,用于从所述操作结果表中查询未完成等待银行处理的操作记录,并将未完成等待银行处理的操作记录分发给操作结果查询线程;以及还用于将操作结果查询线程传输的下一步的操作结果按照业务标识ID生成独立的操作结果通知事件,并将业务的操作结果通知事件生成消息通知事件发送到消息服务器;
所述操作结果查询线程,用于根据所述操作结果分发查询常驻线程分发的未完成等待银行处理的操作记录,通过银行报文解析API从银行核心系统中查询对应的下一步的操作结果,并将接收的银行核心系统返回的下一步的操作结果传输至操作结果分发查询常驻线程。
具体的业务操作结果主动通知的过程为:支付业务操作线程根据业务事件请求,调用银行报文解析API,进行各种支付业务(比如,跨行支付、工资代发等)操作,进行支付业务操作后,将本次业务操作的唯一业务标识ID以及返回结果存储到数据库服务器的操作结果当中。操作结果分发查询常驻线程定期查询操作日志,查询出操作未完成等待银行处理的的操作记录,并根据查询到的操作记录条数,将业务标识ID及必要的信息分发给操作结果查询线程去查询。操作结果查询线程通过业务标识ID及必要的信息,通过银行报文解析API到银行核心系统中去查询未完成等待银行处理的的操作记录的下一步的操作结果,并接收返回的下一步的操作结果,并传输给操作结果分发查询常驻线程,操作结果分发查询常驻线程将该下一步的操作结果更新到数据库服务器的操作结果表中。操作结果分发查询常驻线程还将这些下一步的的操作结果按照业务标识ID生成独立的操作结果通知事件,并将业务的操作结果通知事件生成消息通知事件发送到消息服务器供多个应用服务器监听、接收和处理。
实施例2、一种银行业务信息的主动通知方法。
参见图6,本实施例提供的银行业务信息的主动通知方法包括以下步骤:
S1,支付网关服务器通过银行报文解析API将接收的至少一个业务事件请求转发给银行核心系统,并接收银行核心系统返回的与所述业务事件请求相关的银行业务信息,并将银行业务信息存储至数据库服务器;
S2,支付网关服务器从数据库服务器中读取银行业务信息,并根据所述银行业务信息生成消息通知事件,发送至消息服务器进行存储;
S3,应用服务器主动监听消息服务器中的消息通知事件,当监听到消息通知事件时,接收并处理该消息通知事件。
其中,所述银行业务信息包括来账流水信息和操作结果信息。
当银行业务信息为来账流水信息时,支付网关服务器包括至少一个来账流水查询常驻线程和一个入账查询常驻线程,步骤S1具体包括:
S11a,来账流水查询常驻线程按照预定时间间隔从银行核心系统中查询指定账户的来账流水信息,并更新至数据库服务器的来账流水数据表中;
S12a,入账查询常驻线程从所述来账流水数据表中查询来账流水信息,并将新增的来账流水信息插入数据库服务器的入账管理表中;
步骤S2具体包括:
入账查询常驻线程将所述新增的来账流水信息以账户为单位生成独立的账户来账事件,并将账户来账事件生成消息通知事件发送到消息服务器。
当所述银行业务信息为操作结果信息时,所述支付网关服务器中包括至少一个支付业务操作线程、至少一个操作结果查询线程和一个操作结果分发查询常驻线程,步骤S1具体包括:
S11b,支付业务操作线程根据业务事件请求,调用银行报文解析API,进行相应的支付业务操作,并将支付业务操作后返回的操作结果存储至数据库服务器中的操作结果表中;
S12b,操作结果分发查询常驻线程从所述操作结果表中查询未完成等待银行处理的操作记录,并将未完成等待银行处理的操作记录分发给操作结果查询线程;
S13b,所述操作结果查询线程根据所述操作结果分发查询常驻线程分发的未完成等待银行处理的操作记录,通过银行报文解析API从银行核心系统中查询对应的下一步的操作结果,并将接收的银行核心系统返回的下一步的操作结果传输至操作结果分发查询常驻线程;
步骤S2具体包括:
操作结果分发查询常驻线程将操作结果查询线程传输的下一步的操作结果按照业务标识ID生成独立的操作结果通知事件,并将业务的操作结果通知事件生成消息通知事件发送到消息服务器。
本发明提供的一种银行业务信息的主动通知系统及主动通知方法,提供了一个支付业务平台,能够从银行核心系统中主动获取银行来账流水信息和银行业务操作结果信息,并能够独立的保存来账流水、来账明细以及业务操作结果,且及时生成消息通知事件保存于消息服务器中,应用服务器主动监听消息服务器,实现了银行来账自动通知,以及银行的操作结果,包括中间操作结果和最终操作结果(最终操作结果包括操作成功结果和操作失败结果)能主动通知的目的。
在本说明书的描述中,参考术语“实施例一”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体方法、装置或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、方法、装置或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。