CN113656415B - 支付方法、支付装置、支付设备及存储介质 - Google Patents
支付方法、支付装置、支付设备及存储介质 Download PDFInfo
- Publication number
- CN113656415B CN113656415B CN202110741826.3A CN202110741826A CN113656415B CN 113656415 B CN113656415 B CN 113656415B CN 202110741826 A CN202110741826 A CN 202110741826A CN 113656415 B CN113656415 B CN 113656415B
- Authority
- CN
- China
- Prior art keywords
- payment
- account
- deduction
- transaction
- deduction operation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 34
- 230000001360 synchronised effect Effects 0.000 claims abstract description 27
- 238000012795 verification Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000012011 method of payment Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 11
- 230000004044 response Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Abstract
本申请公开了一种支付方法、支付装置、支付设备及存储介质,涉及支付领域,以解决传统支付方法的交易处理的效率低的问题。所述支付方法包括:接收客户端发出的支付请求;获取所述支付请求对应的支付信息,所述支付信息包括付款账户和收款账户;采用同步调用方式对所述付款账户进行扣款操作,并采用异步调用方式对所述收款账户进行加款操作。本申请用于支付。
Description
技术领域
本申请涉及支付领域,尤其涉及一种支付方法、支付装置、支付设备及存储介质。
背景技术
随着互联网的发展,越来越多的金融衍生类业务进入人们的生活,例如在线购物、积分兑换、直播打赏、游戏虚拟物品交易等。这种金融衍生类业务都涉及用户与平台间的交易,因此需要支付系统的支撑。
传统的互联网金融业务的支付方法为了保证金融的安全性,因此对交易过程中的一致性要求较高。然而,这样则会导致交易处理的效率低的问题。
发明内容
本申请实施例提供一种支付方法、支付装置、支付设备及存储介质,能够解决传统支付方法的交易处理的效率低的问题。为了实现上述目的,本申请实施例采用下述技术方案:
第一方面,提供了一种支付方法,所述方法包括:
接收客户端发出的支付请求;
获取所述支付请求对应的支付信息,所述支付信息包括付款账户和收款账户;
采用同步调用方式对所述付款账户进行扣款操作,并采用异步调用方式对所述收款账户进行加款操作。
第二方面,提供了一种支付装置,所述装置包括:
接收模块,用于接收客户端发出的支付请求;
获取模块,用于获取所述支付请求对应的支付信息,所述支付信息包括付款账户和收款账户;
处理模块,采用同步调用方式对所述付款账户进行扣款操作,并采用异步调用方式对所述收款账户进行加款操作。
第三方面,提供了一种支付设备,其特征在于,所述支付设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述第一方面所述的方法的步骤。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的方法的步骤。
在本申请实施例中,当接收到用户发起的支付请求时,可以获取支付请求中的支付信息,例如用户的账户和收款账户,然后通过采用同步调用方式对付款账户进行扣款操作,然后通过采用异步调用方式将从付款账户扣下的款打到收款方的账户上。由于本申请实施例在对收款方进行加款操作时采用的是异步调用的方式,因此,可以同时处理多个加款的操作,从而提高了交易处理的效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例提供的一种支付方法的流程图。
图2是本申请实施例提供的支付方法中对付款账户扣款的流程图。
图3a为本申请实施例提供的交易明细表的示意图。
图3b为本申请实施例提供的分录的示意图。
图3c为本申请实施例提供的收款账户余额表的示意图。
图4是本申请实施例提供的另一种支付方法的流程图。
图5是本申请实施例提供的又一种支付方法的流程图
图6是本申请实施例提供的支付装置的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对上述如何解决传统支付方法的交易处理的效率低的问题,本申请提出一种解决方案,旨在提供一种可以提高交易处理的效率的方法。
图1是本申请实施例提供的一种支付方法的流程图。图1所示的方法可以由服务器执行,所述服务器可以是分布式网络中的服务器。如图1所示,本申请实施例提供的支付方法可以包括:
步骤110,接收客户端发出的支付请求。
可以理解的是,当用户进行在线购物、积分兑换、直播打赏、游戏虚拟物品交易等金融衍生类业务时,若用户点击下单某商品并点击付款后,客户端即会生成一个支付请求,所述商品可以是实物商品,例如衣服、食品等,也可以是虚拟商品,例如积分、直播中的虚拟特效等。所述客户端可以是支付平台如支付宝、手机银行等支付平台的客户端,也可以是各种购物平台的客户端。所述支付请求可以是多个支付请求。
步骤120,获取所述支付请求对应的支付信息,所述支付信息包括付款账户和收款账户。
一方面,所述客户端生成并发出的支付请求中可以包含所述支付请求对应的各种支付信息;另一方面,所述客户端生成并发出的支付请求中也可以不包含所述支付请求对应的各种支付信息。当所述支付请求中不包含所述支付请求对应的各种支付信息时,所述客户端可以将所述支付请求对应的支付信息与所述支付请求一起发出。因此,所述支付信息可以由服务器从客户端发送的支付请求的数据中获取,也可以由服务器从其他与支付请求数据一同从客户端发出的数据中获取。
所述付款账户可以为付款方的银行账户或其他金融平台的账户,所述收款账户可以为收款方的银行账户或其他金融平台的账户。除上述付款账户、收款账户外,所述支付信息还可以包含付款时间、交易的商品的名称等信息。
步骤130,采用同步调用方式对所述付款账户进行扣款操作,并采用异步调用方式对所述收款账户进行加款操作。
所述同步调用的意思是:当一个进程在调用某个子程序时,需等待该子程序执行完成并返回结果,才可执行下一步。若该子程序需要一段时间才能执行完成并返回结果,那么这个进程则会一直等待。例如,在本申请实施例中,当接收到多个支付请求时,只有在对第一个支付请求进行扣款操作成功后,才会响应于下一个支付请求,进行下一个扣款操作;或者,只有在对第一个支付请求进行扣款操作成功后,才会进一步响应所述第一个支付请求,进行后续的加款操作。
需说明的是,本申请实施例中的采用同步调用方式进行扣款操作,中的同步调用思想不仅体现在完成第一次扣款操作后,再进行下一次扣款操作,还体现在完成第一次扣款操作后,再进行第一次加款操作。
所述异步调用的意思是:当一个进程在调用某个子程序时,无论该子程序是否执行完成并返回结果,这个进程都可以执行下一步。例如,在本申请实施例中,当接收到多个支付请求时,响应第一个支付请求之后,不需等待第一个支付请求的加款操作成功完成并返回结果,即可响应下一个支付请求,进行下一个加款操作。并且,异步调用机制可以同时处理多个加款操作。因此,当接收到多个支付请求时,采用异步调用机制进行加款操作可以大大提高交易处理的效率。
需了解的是,本申请实施例提供的支付方法可以为基于分布式网络的支付方法。
在本申请实施例中,当接收到用户发起的支付请求时,可以获取支付请求中的支付信息,例如用户的账户和收款账户,然后通过采用同步调用方式对付款账户进行扣款操作,然后通过采用异步调用方式将从付款账户扣下的款打到收款方的账户上。由于本申请实施例在对收款方进行加款操作时采用的是异步调用的方式,因此,可以同时处理多个加款的业务,从而提高了交易处理的效率。
本申请实施例还可以提供一种支付系统,本申请实施例提供的支付方法可以应用于所述支付系统。所述支付系统可以是分布式系统。分布式系统(distributed system)是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。分布式系统具有高度的内聚性和透明性,内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统,透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。例如,在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无副本、数据存于哪个站点以及事务在哪个站点上执行等。
本申请实施例提供的支付系统可以应用于可以处理交易的中间平台(例如,手机银行或ATM金融交易自助服务终端等),即在用户与用户进行交易时,先将付款方账户的钱或积分等扣到中间平台上,然后由中间平台将从付款方扣的钱或积分等打到收款方的账户。
需了解的是,上文提到的服务器可以为分布式网络中的服务器。
当接收到多个支付请求时(所述多个支付请求可以来自于同一个用户,也可以来自于不同的用户),所述支付请求包括多个支付请求;针对所述多个支付请求中发起时间上相邻的任意两个支付请求:第一支付请求和第二支付请求,其中,所述第一支付请求的发起时间早于所述第二支付请求的发起时间,所述第一支付请求对应第一支付信息,所述第二支付请求对应第二支付信息,所述第一支付信息包括第一付款账户和第一收款账户,所述第二支付信息包括第二付款账户和第二收款账户。
所述发起时间上相邻的任意两个支付请求表示:在接收请求的时间的维度上相邻的任意两个支付请求。
图2为本申请实施例提供的支付方法中对付款账户扣款的流程图。
如图2所示,上述步骤130中的采用同步调用方式对所述付款账户进行扣款操作可以包括以下步骤(在此仅列出接收到两个支付请求时的步骤,所述支付请求还可以包括第三支付请求、第四支付请等多个支付请求。本申请实施例提供的支付方法可以应用于响应于在时间上连续的任意两个支付请求):
响应于所述第一支付请求,对所述第一付款账户进行第一扣款操作;
判断所述第一扣款操作是否成功完成;
在所述第一扣款操作未成功完成的情况下,等待所述第一扣款操作成功完成;
在所述第一扣款操作成功完成的情况下,响应于所述第二支付请求,对所述第二付款账户进行第二扣款操作;
判断所述第二扣款操作是否成功完成;
在所述第二扣款操作未成功完成的情况下,等待所述第二扣款操作成功完成;
在所述第二扣款操作成功完成的情况下,基于发起时间依次响应后续的各支付请求。
所述后续的支付请求可以是第三支付请求,所述第三支付请求与所述第二支付请求在时间上相邻。
可选地,在响应于所述第一支付请求之后,所述支付方法还可以包括:生成第一扣款请求;
在响应于所述第二支付请求之后,所述支付方法还可以包括:生成第二扣款请求。
可选地,在对所述第一付款账户进行第一扣款操作之前,所述支付方法还可以包括:响应于所述第一扣款请求;
在对所述第二付款账户进行第二扣款操作之前,所述支付方法还可以包括:响应于所述第二扣款请求。
由于,本申请实施例中采用同步调用方式进行付款账户(即付款方)的加款,因此可以保证扣款成功后才会响应于下一个支付请求,保证扣款成功后进行异步加款。因此,本申请实施例可以保证资金安全。若在未扣款成功的情况下响应下一个支付请求或者进行加款操作,则会导致付款方没有付款,而收款方的账户却收到了加款,因此会导致中间平台资金的损失。
在对付款账户扣款成功之后,上述步骤130中的采用异步调用方式对所述收款账户进行加款操作可以包括以下步骤:
在所述第一扣款操作成功完成的情况下,采用非阻塞的方式对所述第一收款账户进行第一加款操作;
在所述第二扣款操作成功完成的情况下,采用非阻塞的方式对所述第二收款账户进行第二加款操作。
其中,在本申请实施例中,非阻塞的方式可表示在第一加款操作未成功完成时,也可进行第二加款操作;即不需等待第一加款操作完成后再进行第二加款操作。甚至,可以同时进行多个加款操作。
可选地,在所述第一扣款操作成功完成之后,所述支付方法还可以包括:生成第一加款请求;
在所述第二扣款操作成功完成之后,所述支付方法还可以包括:生成第二加款请求。
可选地,在对所述第一收款账户进行第一加款操作之前,所述支付方法还可以包括:响应于所述第一加款请求;
在对所述第二收款账户进行第二加款操作之前,所述支付方法还可以包括:响应于所述第二加款请求。
需说明的是,上述采用同步调用方式对所述付款账户进行扣款操作的步骤和采用异步调用方式对所述收款账户进行加款操作的步骤,均针对的是接收到两个支付请求的情况,所述支付请求还可以包括第三支付请求、第四支付请等多个支付请求;扣款操作还可以包括第三扣款操作、第四扣款操作等多个扣款操作;扣款请求可以还可以包括第三扣款请求、第四扣款请求等多个扣款请求;加款操作还可以包括第三加款操作、第四加款操作等多个加款操作;加款请求还可以包括第三加款请求、第四加款请求等多个加款请求。
如上述针对采用异步调用方式对所述收款账户进行加款操作的步骤中所述,在所述第一扣款操作成功完成的情况下,对所述第一收款账户进行第一加款操作;在所述第二扣款操作成功完成的情况下,对所述第二收款账户进行第二加款操作。可见,本申请实施例中对收款账户进行加款操作的前提是,对付款账户的扣款操作成功完成。
并且,本申请实施例在对收款账户进行加款操作时,不需要等待上一个加款操作完成后,再进行下一个加款操作。在分别响应多个加款请求后,甚至可以同时进行多个加款操作。因此,本申请实施例中的异步加款的方法节约了加款时间,提高了交易处理的效率,可以应用于支付请求高并发的应用场景。
以上针对采用同步调用方式对所述付款账户进行扣款操作和采用异步调用方式对所述收款账户进行加款操作的描述主要用于解释采用同步调用方式对所述付款账户进行扣款操作和采用异步调用方式对所述收款账户进行加款操作的原理。
可选地,所述支付信息还可以包括:交易金额和订单编号,步骤130中的所述对所述付款账户进行扣款操作之前,还可以包括:
基于所述支付信息对所述支付请求进行参数校验和订单编号校验;
并确认所述参数校验成功且所述订单编号校验成功;
所述支付方法还可以包括:
在所述扣款操作成功完成的情况下,基于所述支付信息生成交易明细表,并将所述交易明细表中的交易状态设置为指示交易扣款成功。
可以理解的是,当用户发起支付请求时,会同步生成一个交易订单,所述订单编号则是所述第一支付请求对应的交易订单的编号。所述交易明细表为包含所述支付请求对应的交易的各种信息的表单。所述交易状态可以为交易扣款成功、收款账户余额正在调整和收款账户余额已调整三种状态中的一种。可以理解的是,所述交易状态也可以用标志符号表示,如1表示交易成功扣款,2表示收款账户余额正在调整,3表示收款账户余额已调整。所述交易扣款成功表示已完成对付款账户的扣款,所述收款账户余额正在调整表示正在对收款方进行加款操作,所述收款账户余额已调整表示已完成对收款账户的加款。
所述参数校验可以包括对所述支付信息中的各种数据的数据类型、数据长度等参数进行校验。例如,所述支付信息中的付款账户应该是数字,而非其他类型的字符。所述订单编号校验可以为对订单编号的位数的校验,因为订单编号的位数一般是一定的,若订单编号的位数的不等于预设位数,则可能该支付请求对应的订单无效。
若所述参数校验失败和/或所述订单编号校验失败,则将支付失败的结果返回给客户端。
若所述参数校验成功且所述订单编号校验成功,则对所述付款账户进行扣款操作(将付款账户的余额减去交易金额)并基于所述支付信息生成交易明细表,将所述交易明细表中的交易状态设置为指示交易扣款成功。
步骤130中的所述对所述收款账户进行加款操作还可以包括:
根据所述交易金额,对所述收款账户的余额进行调整;
将所述交易明细表中的交易状态更新为指示收款账户余额已调整。
在本申请实施例中,对付款方采用同步调用方式进行扣款操作的操作可以在Mysql数据库中进行,也可以在其他数据库中进行。即通过Mysql数据库进行同步扣款保证资金的安全,提高交易性能。
采用异步调用方式对所述收款账户进行加款操作的操作可以在消息队列中进行,例如Kafka消息队列。即通过消息队列进行异步加款以在保证交易的一致性的同时提高交易效率(既能在保证扣款操作完成的情况下进行加款操作,又能同时处理多个加款操作)。最后在通过消息队列处理完异步加款操作后,将操作结果和相关数据保存在数据库中。
当通过Mysql数据库对付款方进行扣款操作,并生成交易明细表后(即完成扣款操作后),将交易明细表发送给消息队列。然后,通过消息队列进行加款操作。
消息是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息队列是在消息的传输过程中保存消息的容器。消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。
若不使用消息队列,直接在数据库中进行异步加款,在需要同时处理多个异步加款的操作时,会对数据库造成巨大的压力,同时也使得响应延迟加剧。在使用消息队列后,采用异步调用方式进行加款操作的请求发送到消息队列后立即返回受理结果,再由消费者进程在消息队列中获取请求数据并进行异步处理,处理完成后将处理结果写入数据库中。由于消息队列服务器处理速度远快于数据库(消息队列服务器也比数据库具有更好的伸缩性),因此用户的响应延迟可以得到有效改善。
在通过数据库完成扣款操作并生成交易明细表之后,数据库还可以将所述交易明细表发送给消息队列。
本申请实施例提供的支付方法还可以包括:从所述消息队列中获取所述交易明细表,基于所述交易明细表生成分录;
根据所述交易金额,对所述收款账户的余额进行调整;
将所述交易明细表中的交易状态更新为指示收款账户余额已调整。
所述分录为会计分录,是在所述交易明细表的基础上,将所述交易明细表拆分为分别针对付款方和收款方的两条记录。符合传统金融行业的复式记账原理,后续在对交易进行统计时,可以分别对会计分录中的付款方的记录和收款方的记录进行财务统计和结算。
所述数据库中还可以保存有收款账户的各种信息表,如收款账户的余额表。数据库在将所述交易明细表发送给消息队列时;还可以获取所述余额表,将所述余额表发送给消息队列。
所述对所述收款账户的余额进行调整可以包括:获取所述收款账户的余额表,根据所述交易金额,对所述收款账户的的余额表中的余额进行调整。
在从所述消息队列中获取所述交易明细表之后,本申请实施例提供的支付方法还包括:
将所述交易明细表中的交易状态更新为收款账户余额正在调整。
所述将所述交易明细表中的交易状态更新为收款账户余额已调整即表示加款操作已完成。在加款操作完成后,消息队列可以发出加款操作已完成的消息,然后将收款账户进行余额调整后的的余额表、分录及更新交易状态后的交易明细表保存到数据库中。
为了避免表单数据量过大引起性能瓶颈,在本申请实施例中,可以将交易明细表、分录和收款账户余额表按照时间维度进行拆分后进行保存;也可以按照表单的类型进行拆分后保存,还可以先进行时间维度的拆分后,再进行表单类型进行拆分后保存。需说明的是,由于本申请实施例提供的支付系统为分布式支付系统,因此,所述交易明细表、分录和收款账户余额表可以保存在不同的数据库中,可以使用不同的服务器资源。
图3a为本申请实施例提供的交易明细表的示意图。
图3b为本申请实施例提供的分录的示意图。
图3c为本申请实施例提供的收款账户余额表的示意图。
如图3a-3c所示,所述交易明细表中可以包括用户id,渠道、业务号、渠道时间、渠道流水号、本地时间、本地流水号、支付订单号、发起方账户、接收方账户、交易代码、交易金额和交易状态。所述分录包括用户id、渠道、业务号、本地时间、本地流水号、分录序号、借贷标志、科目号、分户类型、商编、金额、交易代码、记账账号类型和记账账号。所述收款账户余额表包括分户编号、累计余额、当前余额和上一动户会计时间。
所述用户id可以为付款方的身份证号、也可以为收款方的身份证号,还可以为付款方在进行交易的平台的用户标识号,也可以为收款方在进行交易的平台的用户标识号。所述渠道为用户进行交易的渠道,可以为客户端的名称,也可以为用户进行交易的应用程序的名称。所述业务号为用户进行交易的业务的类型号码,如用户在观看直播时购买了某个特效,此时的业务号为104。所述渠道时间为渠道服务器的时间,所述本地时间为中间平台的时间,即为执行本申请实施例提供的支付方法的服务器的时间。所述渠道流水号为渠道的交易明细编号,所述本地流水号为中间平台的交易明细编号。所述支付订单号为渠道、中间平台和商户通用的支付订单号。所述发起方账户为付款账户,所述接收方账户为收款账户。所述交易代码为所述业务号下的编号,一个业务可以对应多种交易。所述分录序号为一笔交易中进行交易的对象的序号,如付款方的分录序号为1,收款方的分录序号为2;当收款方有两个时,付款方的分录序号为1,第一收款方的分录序号为2,第二收款方的分录序号为3。所述借贷标志为付款或收款的标志,如付款的标志为0,收款的标志为1。所述科目号为交易对应的类型,如消费类型、工资代发类型等。所述分户类型为进行交易时账户的类型,可以包括付款、收款和透支。所述商编为交易商品的商户的编号。所述记账账号类型包括进账和出账,进账为1,出账为0。所述记账账户在当前分录针对的账户。所述分户编号为一个分户类型下的编号。所述累计余额为会计领域的累计余额。所述上一动户会计时间为,上一次进行余额变更的时间。
当在所述扣款操作成功完成之后,生成加款请求(如所述第一加款请求和/或第二加款请求)时,可能会由于网络原因或其他原因没有及时响应于所述异步加款请求。为了避免这种情况,本申请实施例提供的支付方法还可以包括:
对所述交易明细表中的交易状态进行监控;
若在生成所述交易明细表后的预设时间内,所述交易明细表中的交易状态保持为指示交易扣款成功,则生成加款指令;所述加款指令指示对所述收款账户进行加款操作;
所述对所述收款账户进行加款操作包括:
响应于所述加款指令;
对所述收款账户进行加款操作:根据所述交易金额,对所述收款账户的余额进行调整;将所述交易明细表中的交易状态更新为指示收款账户余额已调整。
如此,可以避免长时间没有响应加款请求的问题,同时避免收款方长时间无法收到款的问题。
同时,若网络状况不好,也可能导致无法及时响应来自客户端的支付请求的问题。此时,用户可能会重复地点击下单和付款。为了避免,针对同一个交易对付款方进行多次扣款的情况。本申请实施例提供的支付方法还可以包括:
接收用户发起的至少两个支付请求;
判断所述至少两个支付请求对应的支付信息中的订单编号是否相同;
若所述至少两个支付请求对应的支付信息中的订单编号相同,则响应于所述至少两个支付请求中的一个支付请求;采用同步调用方式对所述付款账户进行扣款操作,并采用异步调用方式对所述收款账户进行加款操作。
所述响应于所述至少两个支付请求中的一个支付请求可以是响应于所述至少两个支付请求中的第一个支付请求或最后一个支付请求,也可以是响应于所述至少两个支付请求中的任意一个支付请求。
如此,当用户针对同一个交易多次点击下单并付款后,生成多个支付请求后,则可避免响应于同一个交易的多个支付请求,对用户(付款方)进行重复扣款。
图4本申请实施例提供的另一种支付方法的流程图。
如图4所示,本申请实施例提供的支付方法可以包括以下步骤:
步骤401,接收来自客户端的支付请求。
步骤402,基于所述支付请求,获取所述支付请求对应的支付信息,所述支付信息包括付款账户、收款账户、交易金额和订单编号。
步骤403,基于所述支付信息对所述支付请求进行参数验证。
若步骤403参数验证成功,则进行步骤404;若步骤403参数验证失败则返回支付失败的结果。
步骤404,基于所述支付信息对所述支付请求进行订单编号验证。
若步骤404参数验证成功,则进行步骤405;若步骤404参数验证失败则返回支付失败的结果。
步骤405,采用同步调用方式对所述付款账户进行扣款操作;并在扣款操作成功完成后,基于所述支付信息生成交易明细表,所述交易明细表中的交易状态为交易扣款成功。
步骤406,将所述交易明细表发送给消息队列。
步骤407,从所述消息队列中获取所述交易明细表,将所述交易明细表中的交易状态更新为收款账户余额正在调整。
步骤408,基于所述交易明细表生成分录。
步骤409,根据所述交易金额采用异步调用方式对所述收款账户的余额进行调整,更新收款账户余额表;并将所述交易明细表中的交易状态更新为收款账户余额已调整。
步骤410,将收款账户的余额表、分录及更新后的交易明细表保存到数据库中。
本申请实施例提供的支付方法,当接收到用户发起的支付请求时,可以获取支付请求中的支付信息,例如用户的账户和收款账户,然后对付款账户(即付款方的账户)进行扣款操作。保证对付款账户扣款成功后,进行对收款账户的加款操作。因此,可以保证中间平台资金的安全。
图5本申请实施例提供的另一种支付方法的流程图。
如图5所示,本申请实施例提供的支付方法可以包括以下步骤:
步骤501,接收来自客户端的多个支付请求;响应于第一个支付请求;对所述第一付款账户进行第一扣款操作。
步骤502,判断所述第一扣款操作是否成功完成。
步骤503,在所述第一扣款操作成功完成的情况下,响应于第二个支付请求;对所述第二付款账户进行第二扣款操作。
步骤504,在所述第一扣款操作成功完成的情况下,对第一收款账户进行加款操作。
步骤505,判断所述第二扣款操作是否成功完成。
步骤506,在所述第二扣款操作成功完成的情况下,响应于第三个支付请求;对所述第三付款账户进行第三扣款操作。
步骤507,在所述第二扣款操作成功完成的情况下,对第二收款账户进行加款操作。
步骤508,判断所述第三扣款操作是否成功完成。
步骤509,在所述第三扣款操作成功完成的情况下,响应于第四个支付请求;对所述第四付款账户进行第四扣款操作。
步骤510,在所述第三扣款操作成功完成的情况下,对第三收款账户进行加款操作。
需要说明的是,以上仅是以四个支付请求为例进行说明,在存在比四个支付请求更多的支付请求的情况下,也可以类似地执行上面的步骤,在此不再赘述。
需说明的是,在步骤502之后可以进行步骤503,再进行步骤504;也可以先进行步骤504,再进行步骤503;还可以在步骤502之后,同时进行步骤503和步骤504。同理,在步骤505之后可以进行步骤506,再进行步骤507;也可以先进行步骤507,再进行步骤506;还可以在步骤505之后,同时进行步骤506和步骤507。在步骤508之后可以进行步骤509,再进行步骤510;也可以先进行步骤510,再进行步骤509;还可以在步骤508之后,同时进行步骤510和步骤509。
并且,步骤503、步骤506和步骤509可以同时进行。需说明的是,所述同时进行指的不是同时开始和同时结束,而是在步骤503没有完成时,可以进行步骤506和/或步骤509,在步骤506没有完成时,可以进行步骤509。步骤501、步骤504、步骤507和步骤510可由数据库执行,步骤503、步骤506和步骤509可由消息队列采用异步调用的方式执行。
在本申请实施例中,当接收到用户发起的支付请求时,可以获取支付请求中的支付信息,例如用户的账户和收款账户,然后通过采用同步调用方式对付款账户进行扣款操作,然后通过采用异步调用方式将从付款账户扣下的款打到收款方的账户上。由于本申请实施例在对收款方进行加款操作时采用的是异步调用的方式,因此,可以同时处理多个加款的业务,从而提高了交易处理的效率
与上文描述的支付方法相对应,本申请实施例还提供一种支付装置,上文描述的支付方法可应用于本申请实施例提供的支付装置。
图6是本申请实施例提供的一种支付装置的结构框图。如图6所示,本申请实施例提供一种支付装置600,包括接收模块601、获取模块602和处理模块603。
其中,所述接收模块601,用于接收客户端发出的支付请求;
所述获取模块602,用于获取所述支付请求对应的支付信息,所述支付信息包括付款账户和收款账户;
所述处理模块603,用于采用同步调用方式对所述付款账户进行扣款操作,并采用异步调用方式对所述收款账户进行加款操作。
可选地,所述支付请求包括多个支付请求;针对所述多个支付请求中发起时间上相邻的任意两个支付请求:第一支付请求和第二支付请求,其中,所述第一支付请求的发起时间早于所述第二支付请求的发起时间,所述第一支付请求对应第一支付信息,所述第二支付请求对应第二支付信息,所述第一支付信息包括第一付款账户和第一收款账户,所述第二支付信息包括第二付款账户和第二收款账户;相应的,所述处理模块603在采用同步调用方式对所述付款账户进行扣款操作时,用于响应于所述第一支付请求,对所述第一付款账户进行第一扣款操作;
判断所述第一扣款操作是否成功完成;
在所述第一扣款操作未成功完成的情况下,等待所述第一扣款操作成功完成;
在所述第一扣款操作成功完成的情况下,响应于所述第二支付请求,对所述第二付款账户进行第二扣款操作;
判断所述第二扣款操作是否成功完成;
在所述第二扣款操作未成功完成的情况下,等待所述第二扣款操作成功完成;
在所述第二扣款操作成功完成的情况下,基于发起时间依次响应后续的各支付请求。
可选地,所述处理模块603在采用异步调用方式对所述收款账户进行加款操作时,用于:
在所述第一扣款操作成功完成的情况下,对所述第一收款账户进行第一加款操作;
在所述第二扣款操作成功完成的情况下,对所述第二收款账户进行第二加款操作。
可选地,所述第一支付信息还包括:交易金额和订单编号,所述处理模块603在对所述付款账户进行扣款操作之前,还用于基于所述支付信息对所述支付请求进行参数校验和订单编号校验;
并确认所述参数校验成功且所述订单编号校验成功;
在所述扣款操作成功完成的情况下,基于所述支付信息生成交易明细表,并将所述交易明细表中的交易状态设置为指示交易扣款成功。
可选地,所述处理模块603,还用于:对所述交易明细表中的交易状态进行监控;
若在生成所述交易明细表后的预设时间内,所述交易明细表中的交易状态保持为指示交易扣款成功,则生成加款指令;所述加款指令指示对所述收款账户进行加款操作;
所述对所述收款账户进行加款操作包括:响应于所述加款指令,对所述收款账户进行加款操作。
可选地,所述处理模块603在对所述收款账户进行加款操作时,还用于:
根据所述交易金额,对所述收款账户的余额进行调整;
将所述交易明细表中的交易状态更新为指示收款账户余额已调整。
需了解的是,上文描述的支付方法可应用于本申请实施例提供的支付装置,故而这里针对识别支付装置的内容可参照上文方法部分的描述。
本申请实施例还提供一种支付设备,所述支付设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上文方法中的任一种方法。
例如,可以实现:
接收客户端发出的支付请求;
获取所述支付请求对应的支付信息,所述支付信息包括付款账户和收款账户;
采用同步调用方式对所述付款账户进行扣款操作,并采用异步调用方式对所述收款账户进行加款操作。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文方法中的任一种方法。
例如,可以实现:
接收客户端发出的支付请求;
获取所述支付请求对应的支付信息,所述支付信息包括付款账户和收款账户;
采用同步调用方式对所述付款账户进行扣款操作,并采用异步调用方式对所述收款账户进行加款操作。
通过以上的实施方式的描述,本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (7)
1.一种支付方法,其特征在于,所述方法包括:
接收客户端发出的支付请求;
获取所述支付请求对应的支付信息,所述支付信息包括付款账户和收款账户;
采用同步调用方式对所述付款账户进行扣款操作,并采用异步调用方式对所述收款账户进行加款操作;
所述支付请求包括多个;
针对多个支付请求中发起时间上相邻的两个支付请求:第一支付请求和第二支付请求,其中,所述第一支付请求的发起时间早于所述第二支付请求的发起时间,所述第一支付请求对应第一支付信息,所述第二支付请求对应第二支付信息,所述第一支付信息包括第一付款账户和第一收款账户,所述第二支付信息包括第二付款账户和第二收款账户;
相应的,所述采用同步调用方式对所述付款账户进行扣款操作包括:
响应于所述第一支付请求,对所述第一付款账户进行第一扣款操作;
判断所述第一扣款操作是否成功完成;
在所述第一扣款操作未成功完成的情况下,等待所述第一扣款操作成功完成;
在所述第一扣款操作成功完成的情况下,响应于所述第二支付请求,对所述第二付款账户进行第二扣款操作;
判断所述第二扣款操作是否成功完成;
在所述第二扣款操作未成功完成的情况下,等待所述第二扣款操作成功完成;
在所述第二扣款操作成功完成的情况下,基于发起时间依次响应后续的各支付请求;
所述采用异步调用方式对所述收款账户进行加款操作包括:
在所述第一扣款操作成功完成的情况下,对所述第一收款账户进行第一加款操作;
在所述第二扣款操作成功完成的情况下,对所述第二收款账户进行第二加款操作。
2.根据权利要求1所述的支付方法,其特征在于,所述支付信息还包括:交易金额和订单编号,所述对所述付款账户进行扣款操作之前,还包括:
基于所述支付信息,对所述支付请求进行参数校验和订单编号校验;
并确认所述参数校验成功且所述订单编号校验成功;
所述支付方法还包括:
在所述扣款操作成功完成的情况下,基于所述支付信息生成交易明细表,并将所述交易明细表中的交易状态设置为指示交易扣款成功。
3.根据权利要求2所述的支付方法,其特征在于,所述支付方法还包括:
对所述交易明细表中的交易状态进行监控;
若在生成所述交易明细表后的预设时间内,所述交易明细表中的交易状态保持为指示交易扣款成功,则生成加款指令;所述加款指令指示对所述收款账户进行加款操作;
所述对所述收款账户进行加款操作包括:响应于所述加款指令,对所述收款账户进行加款操作。
4.根据权利要求3所述的支付方法,所述对所述收款账户进行加款操作包括:
根据所述交易金额,对所述收款账户的余额进行调整;
将所述交易明细表中的交易状态更新为指示收款账户余额已调整。
5.一种支付装置,其特征在于,所述支付装置包括:
接收模块,用于接收客户端发出的支付请求;
获取模块,用于获取所述支付请求对应的支付信息,所述支付信息包括付款账户和收款账户;
处理模块,采用同步调用方式对所述付款账户进行扣款操作,并采用异步调用方式对所述收款账户进行加款操作;
所述支付请求包括多个支付请求;
针对所述多个支付请求中发起时间上相邻的任意两个支付请求:第一支付请求和第二支付请求,其中,所述第一支付请求的发起时间早于所述第二支付请求的发起时间,所述第一支付请求对应第一支付信息,所述第二支付请求对应第二支付信息,所述第一支付信息包括第一付款账户和第一收款账户,所述第二支付信息包括第二付款账户和第二收款账户;
相应的,所述处理模块在采用同步调用方式对所述付款账户进行扣款操作时,具体用于:
响应于所述第一支付请求,对所述第一付款账户进行第一扣款操作;
判断所述第一扣款操作是否成功完成;
在所述第一扣款操作未成功完成的情况下,等待所述第一扣款操作完成;
在所述第一扣款操作成功完成的情况下,响应于所述第二支付请求,对所述第二付款账户进行第二扣款操作;
判断所述第二扣款操作是否成功完成;
在所述第二扣款操作未成功完成的情况下,等待所述第二扣款操作完成;
在所述第二扣款操作成功完成的情况下,基于发起时间依次响应后续的各支付请求;
所述处理模块在采用异步调用方式对所述收款账户进行加款操作时,具体用于:
在所述第一扣款操作成功完成的情况下,对所述第一收款账户进行第一加款操作;
在所述第二扣款操作成功完成的情况下,对所述第二收款账户进行第二加款操作。
6.一种支付设备,其特征在于,所述支付设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至4中任一项所述的方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110741826.3A CN113656415B (zh) | 2021-06-30 | 支付方法、支付装置、支付设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110741826.3A CN113656415B (zh) | 2021-06-30 | 支付方法、支付装置、支付设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113656415A CN113656415A (zh) | 2021-11-16 |
CN113656415B true CN113656415B (zh) | 2024-06-07 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930428A (zh) * | 2012-09-25 | 2013-02-13 | 武汉云之翼科技有限公司 | 一种利用单点接口实现多点支付的方法 |
US10019711B1 (en) * | 2012-09-12 | 2018-07-10 | Edward Adam Lerner | Processing of online payment transactions |
WO2019134543A1 (zh) * | 2018-01-02 | 2019-07-11 | 阿里巴巴集团控股有限公司 | 信息传输的方法及装置和电子设备 |
CN110428314A (zh) * | 2019-07-15 | 2019-11-08 | 中国人民银行清算总中心 | 用于汇总核对子系统的异步调用方法、装置及电子设备 |
CN112926971A (zh) * | 2021-03-23 | 2021-06-08 | 支付宝(杭州)信息技术有限公司 | 基于储值卡的支付方法及装置 |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10019711B1 (en) * | 2012-09-12 | 2018-07-10 | Edward Adam Lerner | Processing of online payment transactions |
CN102930428A (zh) * | 2012-09-25 | 2013-02-13 | 武汉云之翼科技有限公司 | 一种利用单点接口实现多点支付的方法 |
WO2019134543A1 (zh) * | 2018-01-02 | 2019-07-11 | 阿里巴巴集团控股有限公司 | 信息传输的方法及装置和电子设备 |
CN110428314A (zh) * | 2019-07-15 | 2019-11-08 | 中国人民银行清算总中心 | 用于汇总核对子系统的异步调用方法、装置及电子设备 |
CN112926971A (zh) * | 2021-03-23 | 2021-06-08 | 支付宝(杭州)信息技术有限公司 | 基于储值卡的支付方法及装置 |
Non-Patent Citations (5)
Title |
---|
Research and Design of E-commerce Payment System;Fucheng Wan等;《2017 International Conference on Computer Technology, Electronics and Communication (ICCTEC)》;20190808;第1294-1297页 * |
Understanding complex, real-world systems through asynchronous, distributed decision-making algorithms;Ghosh, S;《JOURNAL OF SYSTEMS AND SOFTWARE》;20010901;第153-167页 * |
互联网金融产品交易平台的设计与实现;张亚华;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150915;I138-92 * |
国家自动支付系统在商业银行中的设计与实现;吕书峰;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120815;I138-214 * |
异步处理在支付环节的应用;小狼人;《https://www.sohu.com/a/394598731_114819》;20200512;全文 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017139688A1 (en) | Peer-to-peer financial transactions using a private distributed ledger | |
JP7002172B2 (ja) | 取引情報処理方法及び装置 | |
CN108389080A (zh) | 交易处理方法及平台 | |
US11715154B2 (en) | Systems and methods for managing accounts in a financial services system | |
US20130218738A1 (en) | Integrating Payment Aggregators With E-Commerce Platform | |
CN108256843B (zh) | 一种代付交易方法及代付交易系统 | |
CN103748602A (zh) | 支付非结算交易 | |
US20220327540A1 (en) | Refunding real-time payment transaction via payment card network messaging and settlement | |
TW202011308A (zh) | 交易設備、方法、裝置、伺服器及儲存媒體 | |
CN106034148B (zh) | 一种快速信息交互方法、本地服务器、异地服务器及系统 | |
CN111325928B (zh) | 银行自助设备的业务执行方法及装置 | |
TWI700655B (zh) | 數值處理方法及裝置 | |
CN113656415B (zh) | 支付方法、支付装置、支付设备及存储介质 | |
WO2020243904A1 (zh) | 一种退款方法、交易系统、账户系统及存储介质 | |
CN113554509B (zh) | 一种线上支付业务的处理方法、装置、介质及电子设备 | |
WO2019203935A1 (en) | Methods and system for selecting payment system for transaction routing | |
CN113656415A (zh) | 支付方法、支付装置、支付设备及存储介质 | |
US11244322B2 (en) | Methods and apparatus for chargebacks of push payment transactions | |
CN113592470A (zh) | 业务处理方法、装置、电子设备以及存储介质 | |
CN109272321B (zh) | 快速支付方法、装置、设备及计算机可读存储介质 | |
US11989722B2 (en) | Omnibus address generation and autoconversion of cryptocurrency | |
CN113988834A (zh) | 一种基于5g消息的大额存单转让交易方法和装置 | |
CN114723440A (zh) | 基于即时通信的资源转移方法、装置、介质及电子设备 | |
CN113298607A (zh) | 订单信息处理方法、装置及电子设备 | |
CN116823238A (zh) | 跨境置业汇款中的数据传输方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |