CN107358425B - 交易费用的计算及支付方法和装置、交易平台及存储介质 - Google Patents
交易费用的计算及支付方法和装置、交易平台及存储介质 Download PDFInfo
- Publication number
- CN107358425B CN107358425B CN201710516583.7A CN201710516583A CN107358425B CN 107358425 B CN107358425 B CN 107358425B CN 201710516583 A CN201710516583 A CN 201710516583A CN 107358425 B CN107358425 B CN 107358425B
- Authority
- CN
- China
- Prior art keywords
- account
- payment
- lock
- transaction
- request
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
- G06Q20/102—Bill distribution or payments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/405—Establishing or using transaction specific rules
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明实施例公开了一种交易费用的计算及支付方法和装置、交易平台及存储介质。所述交易费用的计算及支付方法应用于交易平台中,包括:接收收支请求,其中,所述收支请求包括:支付请求和/或收入请求;判断所述收支请求指向的支付账户是否已配置了账户锁;若所述支付账户未配置账户锁,则配置所述支付账户的账户锁;在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作;在完成所述支付操作之后或所述账户锁的有效时间失效后,解锁所述账户锁。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种交易费用的计算及支付方法和装置、交易平台及存储介质。
背景技术
基于互联网技术的分布式计算平台的建立,使得在交易过程中需要快速准确的实时计算,得到各类费用以及交易各方账户资金流变更变为可能。通过这些实时计算和支付的技术,能够以最快的速度完成交易订单,同时保证计算的准确性。保证用户能在最快的时间内确认其资金变化和交易状态,以便于其对之后的交易做出新的决策。
在现有技术中可能存在多个服务器或多个线程需要都需要进行支付时,就可能涉及大量的支付并发操作。为了避免出现重复支付、重复扣款或者遗漏等问题,在现有技术中,往往采用线程锁、进程锁或数据库行锁等进行账户的锁定,以减少并发操作导致的重复支付等操作下的线程锁、进程锁或数据库行锁的锁死及支付请求积压,迟迟得不到正确支付及结算的问题。
发明内容
有鉴于此,本发明实施例期望提供一种交易费用的计算及支付方法和装置、交易平台及存储介质,至少部分解决支付异常现象频繁或支付响应时延大的问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例第一方面提供一种交易费用的计算及支付方法,其特征在于,应用于交易平台中,包括:
接收收支请求,其中,所述收支请求包括:支付请求和/或收入请求;
判断所述收支请求指向的支付账户是否已配置了账户锁;
若所述支付账户未配置账户锁,则配置所述支付账户的账户锁;
在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作;
在完成所述支付操作之后或所述账户锁的有效时间失效后,解锁所述账户锁。
可选地,所述判断所述收支请求指向的支付账户是否已配置了账户锁,包括:
从共享内存空间读取所述支付账户的账户锁;
所述若所述支付账户未配置账户锁,则配置所述支付账户的账户锁,包括:
若未成功读取到所述支付账户的账户锁,则在所述共享内存空间配置所述账户锁。
可选地,所述方法还包括:
根据所述账户锁的已使用时长及所述账户锁的有效时长,确定所述账户锁的剩余有效时长;
按预设间隔更新所述账户锁的剩余有效时长。
可选地,所述方法包括:
若所述支付账户已配置账户锁,则读取所述账户锁的剩余有效时长;
根据所述剩余有效时长,在所述账户锁失效后,配置与当前所述收支请求对应的账户锁。
可选地,所述在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作,包括以下至少之一:
当所述支付账户为买方账户时,基于所述支付账户的资金数据执行所述支付操作,并根据所述支付操作的结果实时更新所述支付账户及接受支付的卖方账户的资金数据;
当所述支付请求涉及平台账户的收支操作时,实时记录所述收支操作以形成收支流水;当满足结算条件时,根据所述收支流水更新所述平台账户的资金数据。
可选地,所述在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作,包括:
在所述账户锁对应的有效时间内,创建响应所述收支请求的数据库事务;
监控执行所述数据库事务的执行状况信息;
当所述数据库事务包括M笔支付操作时,将第m笔支付操作的操作结果写入到临时存储区域,其中,所述m为小于所述M的正整数;所述M为正整数;
当所述执行状况信息表明所述数据库事务的所述M笔支付操作都执行正常时,将所述临时存储区域的操作结果提交到数据库,其中,提交的所述操作结果,用于更新所述数据库中所述支付账户和收入账户的资金数据;
当所述执行状况信息表明所述数据库事务执行第m笔支付操作异常时,屏蔽所述临时存储区域内操作结果的提交。
可选地,所述交易平台为数字资产交易平台的子平台;
所述在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作,包括以下至少之一:
在所述账户锁对应的有效时间内,计算买方账户的交易金额、买方手续费及买方税费,并从所述买方账户的一个或多个资金账户中,收取所述交易金额、买方手续非及买方税费;其中,所述买方手续费包括:买方佣金、买方服务费及买方官费的至少其中之一;
在所述账户锁对应的有效时间内,计算卖方账户的交易金额,卖方手续费及卖方税费;从所述交易金额中扣除卖方手续费及卖方税费之后,将卖方收入提交到所述卖方账户的一个或多个资金账户中;卖方手续费包括:卖方佣金、卖方服务费及卖方官费的至少其中之一;
在所述账户锁对应的有效时间内,计算买方手续费、卖方手续费、买方税费及卖方税费,并提交到平台账户。
本发明实施例第二方面提供一种交易费用的计算及支付装置,应用于交易平台中,包括:
接收单元,用于接收收支请求,其中,所述收支请求包括:支付请求和/或收入请求;
判断单元,用于判断所述收支请求指向的支付账户是否已配置了账户锁;
配置单元,用于若所述支付账户未配置账户锁,则配置所述支付账户的账户锁;
操作单元,用于在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作;
解锁单元,用于在完成所述支付操作之后或所述账户锁的有效时间失效后,解锁所述账户锁。
本发明实施例第三方面提供一种交易平台、包括:一个或多个相互连接的服务节点;所述服务节点包括:
通信接口,用于通信;
存储器,用于存储信息;
处理器,分别于所述通信接口及存储器连接,用于通过执行所述存储器中存储的计算机程序,实现前述一个或多个技术方案提供的交易费用的计算及支付方法。
本发明实施例第四方面提供一种交易平台,包括:一个或多个相互连接的服务节点;所述服务节点包括:处理器及计算机程序;
所述处理器,用于通过执行所述计算机程序,实现前述一个或多个技术方案提供的交易费用的计算及支付方法。
本发明实施例第五方面提供一种计算机存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后,能够实现前述一个或多个技术方案提供的交易费用的计算及支付方法。
本发明实施例提供的交易费用的计算及支付方法、交易平台及存储介质,在响应收支请求之前,首先会判断请求被执行的支付账户是否已经配置了账户锁,若没有账户锁则配置对应的账户锁,在账户锁对应的有效时间内响应所述收支请求,执行对应的支付操作;在完成收支请求的响应及账户锁的有效时间过去之后(即账户锁)失效之后,则解锁所述支付账户的账户锁,方便对支付账户执行下一个收支请求的响应。
一方面直接设置账户锁,通过账户锁的设定排除了同时多个线程、多个进程和/或多个服务节点对一个支付账户进行同时操作,进而导致的支付错误等问题,从而降低了交易费用的计算和支付异常,提升了支付操作的执行正确率。
另一方面,在本实施例中所述账户锁设置了有效时间,一旦有效时间过去之后,账户锁将自动解锁,从而避免所述一个收支请求出现异常,出现收支卡死的显现,从而减少了这种情况下的收支请求的堆积,确保了收支请求的及时响应,降低了响应延时。
附图说明
图1为本发明实施例提供的第一种交易费用的计算及支付方法;
图2为本发明实施例提供的一种获取账户锁的流程示意图;
图3为本发明实施例提供的一种交易费用的计算及支付装置的结构示意图;
图4为本发明实施例提供的一种交易平台与用户终端的连接示意图;
图5为本发明实施例提供的一种交易节点的结构示意图;
图6为本发明实施例提供的一种账户锁的获取及配置方法的流程示意图;
图7为本发明实施例提供的第二种交易费用的计算及支付方法的流程示意图。
具体实施方式
以下结合说明书附图及具体实施例对本发明的技术方案做进一步的详细阐述。
如图1所示,本实施例提供一种交易费用的计算及支付方法,应用于交易平台中,包括:
步骤S110:接收收支请求,其中,所述收支请求包括:支付请求和/或收入请求;
步骤S120:判断所述收支请求指向的支付账户是否已配置了账户锁;
步骤S130:若所述支付账户未配置账户锁,则配置所述支付账户的账户锁;
步骤S140:在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作;
步骤S150:在完成所述支付操作之后或所述账户锁的有效时间失效后,解锁所述账户锁。
本实施例提供的交易费用的计算及支付方法,可为应用于交易平台中的处理方法。在本实施例中所述交易平台可为数字资产的交易平台。
所述数字资产可包括:网络游戏的虚拟资产,这里的虚拟资产可为游戏点卡;所述游戏点卡可以用于购买游戏中的道具、游戏角色的服装等。所述数字资产还可包括:电子书、视频或音频的使用权限的网络应用资产等。总之,在本实施例中所述数字资产可为:各种以数字信息指示在互联网中使用的资产。
在本实施例中所述收支请求,通常为请求执行某一个交易的支付请求,该支付就涉及到买方账户的支出及卖方的收入,以及平台方账户的支付操作。故本实施例中,所述收支请求,可包括:支付请求及收入请求的至少其中之一。支付请求可为由支付账户向外支付的请求,这样支付账户的当前资金就会有减少;收入请求为向支付账户进行支入的请求,这样收入账户的当前资金就会增加。在本实施例中支付账户是需要向外支出资金的资金账户。
如图1所示,所述步骤S110可包括:接收用户终端发送的收支请求,例如,用户A利用用户终端A登录交易平台,下了一个订单并点击了确定支付,给出了支付密码等操作,则交易平台会接收到用户终端A发送的请求支付该交易订单的支付请求。或者,所述步骤S110可包括:用户B利用用户终端B登录交易平台,卖出了自己的数字资产并产生了相应的订单,则交易平台会接收到用户终端B请求接收支付的收入请求。通常,在所述收支请求中可携带有收支请求对应的交易订单,还携带有交易的数字资产的标识信息等。这里的用户终端可为手机、平板电脑或可穿戴式设备、笔记本电脑或台式电脑等用户使用的移动或固定终端。
在步骤S120中首先判断该支付账户是否有账户锁,若该支付账户有账户锁表明有其他线程、其他操作进程或其他操作节点对该支付账户正在执行收支请求的响应,为了避免冲突,则需要等待之前的支付操作完成之后再执行。
在本实施例中,整个交易平台中一个时间点一个支付账户最多允许一个账户锁,而账户锁一旦设置,则仅触发配置账户锁的收支请求的线程、进程和/或服务节点才对该账户进行支付操作,且仅可以用于操作该收支请求的线程、进程和/或服务节点,其他线程、进程和服务节点都不可以操作该支付账户进行支付,从而减少支付操作过程中的脏读等操作异常现象。
本实施例中提供的账户锁,又可以称之为支付账户锁,该账户锁紧锁定该账户的在一个时间点仅能够响应一个收支请求中的支付操作,而不锁定该账户被支入的请求响应。
总之,本实施例中,一个账户锁对应了一个支付账户及该支付账户的一个收支请求,与该账户锁具有对应关系的收支请求,才允许在该账户锁的有效时间内被响应,完成一个收支请求所指向交易的交易费用的计算和支付。若没有检测到支付账户的账户锁,则配置该支付账户的账户锁,在完成账户锁的配置之后,在该账户锁对应的有效时间内执行所述支付操作。
在本实施例中所述S130,具体可包括:
提取所述支付账户的账户标识为账户锁的锁键,并设置所述账户锁的有效时长,所述有效时长作为所述账户锁的值。一旦完成所述账户锁的设置之后,在共享存储空间内存储有所述账户锁对应的键值对;该键值对包括:键和值;所述键为所述支付账户的账户标识;所述值为所述账户锁的有效时长或当前剩余有效时长。
在本实施例中直接以所述支付账户的账户标识为账户锁的键,方便后续其他线程、进程或服务节点,可以直接以该支付账户的账户标识查询所述账户锁,从而不用专门分配有别于所述账户标识的锁标识,且减少了查询所述账户锁在锁定过程中的支付操作处理。
例如,交易平台在接收到收支请求,通常所述收支请求中携带有支付账户的账户标识;所述交易平台可以提取出该账户标识,就可以到存储有账户锁的存储空间内,直接以该账户标识进行查询了。
在本实施例中为了方便,在进行所述账户锁的查询及配置所述账户锁时,通常将所述账户锁配置在所有线程、进程和/或服务节点所共享的内存空间内,方便所有线程、进程和/或服务节点的查询,而不是在该支付账户的配置数据库中,且配置在内存中,充分利用了内存数据读写等处理速度快的特点,加速了收支请求的响应速度。
在步骤S140中一边执行所述支付操作,另一边根据处理节点的当前系统时间或交易平台的系统时间,动态更新账户锁的有效时长,从而动态更新所述有效时长。
这里的支付账户可为收支请求对应的各种资金账户,这里的资金账户可能是银行卡账户,也可以是网络平台账户的移动平台账户,例如,微信账户或支付宝账户等。最终的支付操作须有和资金平台进行对接。故在本实施例的步骤S140中具体执行支付操作时,需要和资金平台进行对接,包括:从资金平台扣款,向资金平台对应的账户进行划款。在还有一些实施例中,所述步骤S140可包括:向资金平台的支付账户内划款,为了减少交易平台的并发量的处理延迟,向支付账户支付时,可以将付款账户的资金先冻结在交易平台,然后在满足特定条件时,再统一向资金平台的所有支付账户执行具体的支付操作。当然,具体实现时,所述步骤S140的最终结算也可以是实时结算的。所述特定条件可包括:在特定时间段内与资金平台进行最终的现金流的交互,或者在累积到一定笔数的现金流的支付才进行的。
在步骤S150中,若本次收支请求对应的支付操作在有效时间内提前完成,则提前释放所述账户锁,以方便后续的支付操作的进行。若本次支付操作在有效时间内未完成,但是有效时间已经超时,同样需要释放所述账户锁,以免出现异常支付操作导致的卡死现象。
显然在本实施例中,若对一个支付账户进行支付操作时,会对设置一个账户锁,且仅允许设置一个账户锁;仅有配置了该账户锁的使用权限的收支请求,才可以对该账户进行支付操作,而不是允许一个支付账户同时响应两个收支请求,导致出现当前账户的资金重扣,或,支付后资金为负数等收支处理异常问题;显然这样就解决了同时多个线程、相对于采用线程锁而言,可以避免因为线程锁不能解决的使用不同进程导致的收支异常的问题,相对于进程锁而言,可以因为不同操作系统同时请求收支导致的收支异常的问题,针对数据库行锁而言,避免因为无法设置有效时长,在某些情况下出现卡死的情况时,导致大量的收支请求堆积的问题。一方面,尽可能的减少了收支请求的执行异常,另一方面通过有效时长等设置,可以尽可能的减少收支请求的堆积,提升收支请求的响应速率,降低收支请求的响应时延。
如图2所示,所述步骤S120可包括:从共享内存空间读取所述支付账户的账户锁;在图2中显示的服务节点1和服务节点2仅是举例,具体实现时不局限于两个服务节点。
所述步骤S130可包括:若未成功读取到所述支付账户的账户锁,则在所述共享内存空间配置所述账户锁。
在本实施例中,所述共享内存为交易平台所有服务节点所共享的内存;在本实施例中若在共享内存中未发现支付账户的账户锁,则会在共享内存中配置一个可应用于当前收支请求响应的账户锁。
在本实施例中相当于对所有账户的账户锁利用共享内存空间进行统一的集中管理,显然可以避免设置不同的账户锁导致的冲突问题。
在本实施例中一个所述账户锁对应一条信息记录,该信息记录可至少包括:支付账户的账户标识;在一些实施例中,还可包括:该账户锁的剩余有效时长。在还有一些实施例中,所述账户锁还包括特定的锁标识。
在一些实施例中,所述账户锁对应的信息记录还可包括:执行标记;该执行标记可为在该账户锁锁定所述支付账户的过程中,有支付操作执行权限的线程、进程或服务节点的标识,也可以是可被执行的收支请求的请求标识。
所述账户锁对应的信息记录有多种,不局限于上述任意一种;优先为所述账户锁对应的信息记录包括:账户标识及剩余有效时长,一方面具有信息量少,另一方面可以实现账户锁的查询功能及剩余有效时长的查询。
在本实施例中将所述账户锁设置在共享内存中,由于共享内存属于内存的一种,具有数据读取和改写速度快的特点,从而可以进一步加速所述收支请求的响应。
可选地,所述方法还包括:
根据所述账户锁的已使用时长及所述账户锁的有效时长,确定所述账户锁的剩余有效时长;
按预设间隔更新所述账户锁的剩余有效时长。
在本实施例中,所述预设时间间隔可为小于所述有效时长的时间间隔。例如,所述有效接收时长为N秒;所述预设时间间隔可为M秒;其中,所述N可远远大于所述M。
在本实施例中在设置所述账户锁的初始有效时长时,可以根据所述收支请求来确定。具体可如,所述步骤S130可包括:
判断所述收支请求对应的操作数量,例如,支付操作的个数及计算量等。还可包括将对应的支付账户的资金冻结和/或划入到收入账户的操作的数量,与响应收支请求相关的操作中的一个或多个的数量;
确定当前为所述收支请求分配的处理资源的资源数量;
基于所述作数量及所述资源数量,确定所述初始有效时长。
具体如,所述基于所述作数量及所述资源数量,确定所述初始有效时长,可包括:
分配与所述作数量呈正相关的初始有效时长;
分配与所述资源数量呈负相关的初始有效时长。
在一些实施例中,所述初始有效时长的确定可有函数关系确定,所述作数量及所述资源数量为因变量,将所述因变量代入到所述函数关系中就可以计算得到一个所述初始有效时长。
在配置所述账户锁时,与所述账户标识对应的为所述初始有效时长,在步骤S140中执行所述支付操作时,根据时间流逝将会动态更新所述账户锁中的值,从而使得所述账户锁中存储的为当前剩余有效时长,方便其他线程、进程或服务节点,确定当前自己需要等待多久才能执行所述支付操作。
在一些实施例中,所述方法还包括:
当有多个待响应的收支请求指向同一个支付账户时,为所述支付账户设置容纳收支请求的等待队列;
根据所述收支请求的调整因子,调整所述收支请求在所述等待队列中的位置;其中,所述调整因子是与对应的收支请求的当前允许处理时延和/或处理优先级相关的;
依次为所述等待队列中的收支请求分配账户锁,并执行所述步骤S130。
在一些实施例中,所述方法还包括:
根据待响应的所述收支请求在等待队列中的持续时长,动态更新所述调整因子。
例如,对于待响应的收支请求A,在本次等待队列中的调整过程中,从第S1顺位调整到第S2顺位;相当于将收支请求A的响应优先程度降低了,为避免收支请求A被多次调整执行顺位,导致收支请求A的响应超过其最大允许时延,则调整所述收支请求A在所述等待队列中位置之后,会根据收支请求进入等待队列中的时长进行调整因子的动态更新。在本实施例中,所述调整因子越大,则对应的收支请求往后排序的可能性越大;即调整因子与收支请求在所述等待队列中的位置呈反相关。
例如,新接收到一个收支请求,根据该收支请求的发送账户的类型和/或手请求产生的业务类型等属性参数,确定出该收支请求的初始调整因子,将该收支请求与等待队列中各个收支请求的调整因子进行比对,将所述新接收的所述收支请求插入到调整因子比该收支请求大的收支请求前面,以确保按该收支请求所要求的时延响应该收支请求。
再例如,可以每隔一个调整周期,调整一次各个收支请求的调整因子,例如,等待队列中的收支请求的调整因子在等待序列中持续一个调整周期,则调整因子按照预设步长下调一次,直至调整因子为特定值(如零),则不在调整,且为特定值的收支请求不会再被其他新加入的收支请求插入其前面,导致其响应时延过大的问题,确保每一个收支请求都能够按照预定的时延完成响应。
可选地,所述方法包括:
若所述支付账户已配置账户锁,则读取所述账户锁的剩余有效时长;
根据所述剩余有效时长,在所述账户锁失效后,配置与当前所述收支请求对应的账户锁。
通过所述剩余有效时长的产生和记录,方便后续线程、进程和/或服务节点,明晰当前自己需要等待多久可以获得账户锁,进行对应的收支请求的响应。
可选地,所述步骤S140可包括以下至少之一:
当所述支付账户为买方账户时,基于所述支付账户的资金数据执行所述支付操作,并根据所述收操作的结果实时更新所述支付账户的资金数据;
当所述支付请求涉及平台账户的收支操作时,实时记录所述收支操作以形成收支流水;当满足结算条件时,根据所述收支流水更新所述平台账户的资金数据。
在本实施例中所述卖方账户和买方账户都可为用户账户,用户通常需要在自己完成一笔交易之后,就立即查看到自身的账户的剩余金额等。
故在本实施例中,一旦完成支付操作,就立即对卖方账户或买方账户进行金额结算。
而在本实施例中为了减少交易平台的负荷,以节省更多的计算资源用于用户账户的支付和结算,在本实施例中,若收支请求涉及的平台账户,则仅进行收支流水的记录,在满足一定条件的情况下,在进行当前未结算流水的一次性结算,减少交易平台的结算操作。
例如,若一个收支请求对应于一条收支流水,所述满足结算条件可包括以下至少之一:
所述收支流水的条数达到预定条数;
当前时间为所述平台账户的结算时间;
当前交易平台的系统闲置率达到预定值。
达到预定条数的收支流水,进行一次性结算,一方面减少了结算次数,一方面可以避免收支流水堆积过大的问题。
若当前时间已经达到结算时间才结算,可以避免在一个周期频繁的进行结算,例如,以一个工作日为结算周期,每日对平台账户进行一次结算。
再例如,为了避免占用交易平台用于用户账户的计算,在本实施例中可以在交易平台的系统资源的系统闲置率达到预定值时才结算,即相当于在交易平台负荷比较轻的时候进行结算,这样一方面可以进行结算,另一方面也不会加重平台的负担。
可选地,所述步骤S140可包括:
在所述账户锁对应的有效时间内,创建响应所述收支请求的数据库事务;
监控执行所述数据库事务的执行状况信息;
当所述数据库事务包括M笔收支操作时,将第m笔收支操作的操作结果写入到临时存储区域,其中,所述m为小于所述M的正整数;所述M为正整数;
当所述执行状况信息表明所述数据库事务的所述M笔收支操作都执行正常时,将所述临时存储区域的操作结果提交到数据库,其中,提交的所述操作结果,用于更新所述数据库中所述支付账户和收入账户的资金数据;
当所述执行状况信息表明所述数据库事务执行第m笔收支操作异常时,屏蔽所述临时存储区域内操作结果的提交。
在本实施例中一次支付操作可能涉及多笔支出和支入,为了确保后续可以查看到每一笔收支,在本实施例中可选为对每一个收支请求都进行单笔收支处理。在本实施例中会建立一个数据库事务,监控该数据库事务执行过程中的各种异常,例如,执行线程异常、执行进程异常、数据库异常及服务节点宕机等各种异常。在一个收支请求对应的数据库事务完成所有的支付操作之前,单笔的收支操作都写入到临时存储区域,一旦发生异常本收支请求的所有已执行的笔收支操作都进行回滚,就不会直接修改数据库中的金额数据,从而可以减少在收支过程中,仅执行了收支请求中部分收支操作成功导致的后续支付混乱等问题,提升了支付操作的正确性和精确性。在一些实施例中,监测数据库事务的异常还包括:支付账户的异常。例如,根据用户的指示,采用余额支付,若当前支付账户的余额不足,就会导致支付异常的现象,这也是异常的一种。
若没有发生任意一种异常,则将临时存储区域的资金数据正式提交到数据库,作为最终的支付操作的结果。且仅有在本次收支操作提交后,才标记本次收支请求响应完成,否则不变更所述收支请求的状态标记,例如,保持所述收支请求位于所述等待序列中。总之,在本实施例中若一旦发生异常,还会释放当前的账户锁,并将当前执行异常的支付操作备注为待处理的收支请求,以方便后续再次响应该收支请求,一方面可以减少支付操作的堆积,另一方面可以避免收支请求的异常处理,且能确保及时响应。
可选地,所述交易平台为数字资产交易平台的子平台;所述步骤S140可包括以下至少之一:
在所述账户锁对应的有效时间内,计算买方账户的交易金额、买方手续费及买方税费,并从所述买方账户的一个或多个资金账户中,收取所述交易金额、买方手续非及买方税费;其中,所述买方手续费包括:买方佣金、买方服务费及买方官费的至少其中之一;
在所述账户锁对应的有效时间内,计算卖方账户的交易金额,卖方手续费及卖方税费;从所述交易金额中扣除卖方手续费及卖方税费之后,将卖方收入提交到所述卖方账户的一个或多个资金账户中;卖方手续费包括:卖方佣金、卖方服务费及卖方官费的至少其中之一;
在所述账户锁对应的有效时间内,计算买方手续费、卖方手续费、买方税费及卖方税费,并提交到平台账户。
所述交易金额的计算等于交易数量与交易单价的乘积。
所述卖方手续费及买方手续费都可以统称为手续费。在具体的实施中,一单交易可以同时向双方收取手续费,也可以仅向交易的一方收取手续费。在本实施例中,所述卖方佣金可为卖方账户支付给交易的经纪人的经纪账户的激励费用,先由平台账户代收,后续再由平台账户支付给经纪账户。所述买方佣金则为卖方支付给经纪人的经纪账户的激励费用。所述卖方服务费和买方服务费,分别为卖方和卖方因交易支付该交易平台的平台维护费用及数据服务及交易保障费用等。所述卖方官费和买方官费,可能本单交易涉及到国家相关机构或行业协会进行登记或认证等,这些操作可以由交易平台代办,代办这些操作时,涉及到工本费及交易其他机构的费用等。
如图3所示,本实施例提供一种交易费用的计算及支付装置,应用于交易平台中,包括:
接收单元110,用于接收收支请求,其中,所述收支请求包括:支付请求和/或收入请求;
判断单元120,用于判断所述收支请求指向的支付账户是否已配置了账户锁;
配置单元130,用于若所述支付账户未配置账户锁,则配置所述支付账户的账户锁;
操作单元140,用于在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作;
解锁单元150,用于在完成所述支付操作之后或所述账户锁的有效时间失效后,解锁所述账户锁。
本实施例提供的交易费用的计算及支付装置,可为应用于交易平台中的信息处理装置。所述交易平台可由一台服务器,例如,超级计算机组成;所述交易平台还可以包括由交易平台的多个服务器连接而成。
所述判断单元120、配置单元130、操作单元140及所述解锁单元150,可对应于服务节点内的一个或多个处理器或处理电路。所述处理器可包括:中央处理器(CPU)、微处理器(MCU)、数字信号处理器(DSP)、应用处理器(AP)或可编程阵列(PLC)或专用集成电路等。
所述处理器或处理电路,可通过计算机程序等计算机可执行代码,实现上述各个功能单元的功能和操作,一方面可以确保支付操作的正确性,另一方面确保操作的并发性。
可选地,所述判断单元120,用于从共享内存空间读取所述支付账户的账户锁;
所述若所述支付账户未配置账户锁,则配置所述支付账户的账户锁,包括:
若未成功读取到所述支付账户的账户锁,则在所述共享内存空间配置所述账户锁。
可选地,所述装置还包括:确定单元,用于根据所述账户锁的已使用时长及所述账户锁的有效时长,确定所述账户锁的剩余有效时长;更新单元,用于按预设间隔更新所述账户锁的剩余有效时长。
可选地,所述装置包括:读取单元,用于若所述支付账户已配置账户锁,则读取所述账户锁的剩余有效时长;所述配置单元,具体用于根据所述剩余有效时长,在所述账户锁失效后,配置与当前所述收支请求对应的账户锁。
在一些实施例中,所述操作单元140,具体用于执行以下至少之一:当所述支付账户为买方账户时,基于所述支付账户的资金数据执行所述支付操作,并根据所述支付操作的结果实时更新所述支付账户的资金数据及卖方账户的资金数据;当所述支付请求涉及平台账户的收支操作时,实时记录所述收支操作以形成收支流水;当满足结算条件时,根据所述收支流水更新所述平台账户的资金数据。
在另一些实施例中,所述操作单元140,具体用于在所述账户锁对应的有效时间内,创建响应所述收支请求的数据库事务;监控执行所述数据库事务的执行状况信息;当所述数据库事务包括M笔收支操作时,将第m笔收支操作的操作结果写入到临时存储区域,其中,所述m为小于所述M的正整数;所述M为正整数;当所述执行状况信息表明所述数据库事务的所述M笔收支操作都执行正常时,将所述临时存储区域的操作结果提交到数据库,其中,提交的所述操作结果,用于更新所述数据库中所述支付账户和收入账户的资金数据;当所述执行状况信息表明所述数据库事务执行第m笔收支操作异常时,屏蔽所述临时存储区域内操作结果的提交。
可选地,本实施例中的交易平台为应用数字资产交易平台中的子平台;所述操作单元140,具体用于包括以下至少之一:在所述账户锁对应的有效时间内,计算买方账户的交易金额、买方手续费及买方税费,并从所述买方账户的一个或多个资金账户中,收取所述交易金额、买方手续非及买方税费;其中,所述买方手续费包括:买方佣金、买方服务费及买方官费的至少其中之一;在所述账户锁对应的有效时间内,计算卖方账户的交易金额,卖方手续费及卖方税费;从所述交易金额中扣除卖方手续费及卖方税费之后,将卖方收入提交到所述卖方账户的一个或多个资金账户中;卖方手续费包括:卖方佣金、卖方服务费及卖方官费的至少其中之一;在所述账户锁对应的有效时间内,计算买方手续费、卖方手续费、买方税费及卖方税费,并提交到平台账户。
本实施例提供一种交易平台、包括:一个或多个相互连接的服务节点。如图4所示,一个所述服务节点可对应于一个物理服务器,也可以多个服务节点对应于一个物理服务器。多个服务节点之间可以采用各种拓扑结构相连,形成局域网,例如,采用星型结构相连,形成星型结构的内部网络。为了确保交易及支付安全,所述交易平台中还设置有安全网关,该安全网关上设置有防火墙等,进入交易平台的数据包都需要经过过滤,以确保交易平台内部的安全性。
如图5所示,所述服务节点包括:
通信接口110,用于通信;
存储器120,用于存储信息;
处理器130,分别于所述通信接口及存储器连接,用于通过执行所述存储器中存储的计算机程序,实现前述一个或多个技术方案提供的交易费用的计算及支付方法。
在本实施例中所述通信接口110可包括一个物理服务器内两个服务节点之间的逻辑接口,也可包括多个物理服务器之间的物理接口,这里的物理接口可包括:有线接口及无线接口,例如,WiFi接口或电缆接口或光缆接口等,从而可以实现服务节点之间的互连。
所述存储器120可包括:各种存储介质,该存储介质可以用于存储各种信息,例如,存储所述账户锁。
在本实施例中,所述存储器120可包括多个,一部分用于一个服务节点的自身的专用信息处理;另一部分可以用于设置为共享存储器,用于存储所述账户锁,方便其他线程、进程和/或服务节点查询所述账户锁,减少账户锁的重复设置,确保在一个账户锁的有效时间内仅进行一个收支请求的响应,且避免重复响应,确保交易费用的计算及支付正确的同时,尽可能提升的交易费用的计算和支付的效率。
所述处理器130可通过集成电路总线等总线接口140与通信接口110及存储器120分别连接,控制通信接口的信息收发及从存储器120中读取信息或写入信息。
本实施例还提供一种交易平台,包括:一个或多个相互连接的服务节点;所述服务节点包括:处理器及计算机程序;所述处理器,用于通过执行所述计算机程序,实现前述一个或多个技术方案提供的交易费用的计算及支付方法。
在本实施例中所述处理器可为前述的CPU、MCU、DSP、AP或PLC等各种处理器,可以用于计算所述交易费用及执行交易费用的支付。
本实施例还提供一种计算机存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后,能够实现前述一个或多个技术方案提供的交易费用的计算及支付方法。
所述计算机存储介质可为各种类型的存储介质,例如,移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。所述计算机存储介质可为非瞬间存储介质。
以下结合上述任意一个实施例提供几个具体示例:
示例1:
交易费用计算和支付可分为以下几个步骤:
第一:首先确立计费的业务场景或称为需求;
第二:获取不同业务场景设计其计费算法;
第三:账户的并发控制;
第四:资金的支付流程;
第五:异常的处理。
以下详细描述一下交易计费场景及计费流程。
1)交易计费相关方有:交易平台(提供服务,收取手续费、并按国家法定要求代收取税费)、买方、卖方。在计费时,交易平台支持对买卖双方双向收取交易手续费和税费。
2)资金变更的类型主要有:交易金额=商品单价(精确到分位)*数量;买方/卖方手续费(精确到分位),买方/卖方税费(精确到分位)。
资金流向组成为:买方付出资金=交易金额+买方手续费+买方税费;
卖方收入资金=交易金额-卖方手续费-卖方税费;
交易平台收取资金=买方手续费+买方税费+卖方手续费+卖方税费。
费用计算费率等参数全部存储在缓存中,使全部计算都在系统内存中进行,提升计算效率。
3)委托买入
根据用户向交易平台发出买入意向信息(包括产品、数量、单价)进行费用计算,系统需冻结买方交易资金。
4)委托卖出
用户向交易平台发出卖出意向信息,冻结资产,不涉及资金计算。
5)买入(成交)
一个买入交易订单可能拆分成多次成交,每成交一次系统将扣除买方被冻结的资金、并为交易平台账户增加税费、交易手续费。
例如:一个交易订单,委托买入100个,分三次交易完成,第一次30个,第二次55个,第三次15个,那么交易平台计费三次,按成交数量进行费用计算,如果交易订单有最低收费标准,那么计费三次累计收取的手续费+税费最低不能低于此标准。
6)卖出(成交)
一个卖出交易订单可能分多次成交,每成交一次系统将为卖方资金账户增加实收资金(扣除手续费税费)、并为交易平台账户增加税费、手续费。
例如:一个交易订单,委托买入100个,分三次交易完成,第一次30个,第二次55个,第三次15个,那么系统计费三次,按成交数量进行费用计算,如果交易订单有最低收费标准,那么计费三次累计收取的手续费+税费最低不能低于此标准。
7)账户并发控制
本示例主要在redis分布式缓存服务的基础上实现了自己的分布式锁解决方案,来解决多个服务节点在不同服务器中,同时竞争同一个资金账户控制权的问题。redis是一个开源的以键值对方式储存的高性能分布式缓存服务,在海量的商业使用场景中证明了它的能力。这里的分布锁可为前述的账户锁的一种。本示例中将借助redis分布式、高并发、原子性命令的特性,实现一个分布式锁解决资金账户的并发控制。
资金账户分布式锁实现的解决方案:
保证所有节点能共享同一个锁的状态值(账户锁的主键),以避免出现脏读问题。
账户锁要有等待超时和锁失效时间的控制,前者防止竞争情况下快速失败或阻塞,后者防止拥有锁控制权的程序异常,无法释放锁造成死锁现象。
锁退出机制,锁使用完成后的要及时释放及超时失效点。
一个订单的资金支付流程,可包括:买方账户需的支出资金,卖方账户的增加资金,交易平台账户的增加资金(税费、手续费)。设买/卖方更新账户次数为a,a=1,那么交易平台账户需要更新的次数为a*2次(买方手续费、税费,卖方手续费、税费),同时交易1w次,那么交易平台账户需要更新2w次,这将会是一笔巨大的性能开销。
从业务角度来讲,用户的资金账户必须是在交易后能实时看到变化的,而交易平台账户变更对实时性要求不高,则可以在未来某一时刻再汇总统计所得收入。所以从支付流程上可以针对此进行优化,即在交易中只更新买卖双方的资金账户,而对于交易平台账户则只记录一条资金流水,记流水是一个写操作,从而避免了更新账户时的锁竞争,极大的提升了支付效率。
8)异常的处理:
异常包括程序异常、数据库异常,服务节点进程中断,服务器宕机。程序异常及数据库异常时,需在程序中捕获异常信息,输出日志,并判断当前线程是否持有资金账户的锁控制权,并及时释放锁资源。出现后两种异常状况,程序不能及时释放锁时,则由分布式锁的退出机制来避免死锁的状况发生。
如果在交易计费执行中,出现以上四种异常状况。则需要在资金支付流程执行前启动数据库事务,异常发生时则事务未被提交,数据将安全回滚。
本示例应用的计费算法和支付功能,实现方式简单,效率高。满足了在网络游戏虚拟资产交易中的大规模人工委托交易、和撮合交易的计费及支付功能。提高了交易效率,提高了交易活跃性,同时也为交易平台创造了更多的经济收入。
计费及支付流程的解决方案要考虑的核心问题,就是账户资金数据在大并发的情况下数据的准确性及兼顾程序执行效率。所以要求技术解决方案在不同计费场景下(包括异常发生时),保证数据计算的精准和速度。
本示例正是基于以上所有问题,提出的一种交易费用的计算和支付的解决方案。在流程设计和并发处理上进行了优化设计,解决了数据准确、执行高效的问题,并且在实现上简单方便,在不同开发平台上都能轻松的实施移植。本示例提供的交易费用的计算和支付方法具体可包括:
1)数据库建模
2)资金账户模型
3)资金账户实体对象的数据定义,主要包括账户编号,用户编号,银行渠道,可用余额、冻结金额等。
数据库建模可包括:根据用户账户绑定银行卡和/或移动支付账户的数量,将创立多个资金账户,设交易用户为a,a绑定的银行卡数量(必须平台支持的银行,且同一银行只能有一个)为n(n>=1),那么用户a拥有账户数量为n个。前述实施例中提到的卖方账户、卖方账户、支付账户及平台账户,都可认为是资金账户。在本实施例中,所述资金账户可为银行账户,还可以是支付宝账户或财付通账户等互联网的资金账户。
设交易平台支持的银行有x个,那么交易平台的银行账户类型的数量为x,交易平台账户用于存储交易过程中收取的服务费、税费、手续费。
资金变更记录模型,可如下:
变更记录实体对象记录了所有资金账户变更的详细描述和流向。提供历史查询和资金清结算核查的依据。
在本示例中所述本手账户编号为交易发起方的账户编号,在本示例中可认为是买方的账户编号;对应的所述对手账户编号可为交易接受方的账户编号,在本示例中可为卖方的账户编号。
交易订单计费记录模型可如下:
该模型记录了交易计费的过程数据,例如:冻结的交易金额、实收/实付金额,订单合计等
以下提供一种交易费用的计算方法,包括:
首先,进行变量的定义,在本示例中定义以下变量:
交易金额tradeAmt;总交易金额totalTradeAmt;交易数量num;单价price;当次手续费poundage;已扣除手续费hisPoundage;手续费率poundageRatio;当次税费tax;已扣除手续费hisTax;税率taxRatio;最低收费标准min;买入订单冻结资金(手续费)freezePoundage;买入订单冻结资金(税费)freezeTax;买方实收金额buyAmt;卖方实付金额sellAmt;
委托买入的交易费用的计算和支付的可如下示例:
tradeAmt=num*price;举例:num=13,price=111,tradeAmt=1443元。
poundage=tradeAmt*poundageRatio(结果保留两位小数,从小数点后第三位向上入一位);举例:poundageRatio=1%,poundage=1443*1*001=01443≈015元。
tax=tradeAmt*taxRatio(结果保留两位小数,从小数点后第三位向上入一位);举例:taxRatio=1%,tax=1443*1*001=01443≈015元。
tax+poundage<min时,poundage=-min-tax,举例:min=1,tax=015,poundage=015,tax+poundage=03<1,poundage=1-03=07元。
买入(成交)的交易费用的计算和支付的可如下示例:
设第一次成交金额为tradeAmt_1,第二次为tradeAmt_2以此类推,第n次成交时,totalTradeAmt=tradeAmt_1+tradeAmt_2++tradeAmt_n,使用总交易金额来计算下面的手续费、税费,能避免按当次交易金额计算后有小数位时产生的累计误差。tradeAmt=tradeAmt_n。
poundage=totalTradeAmt*poundageRatio(结果保留两位小数,从小数点后第三位向上入一位);tax=totalTradeAmt*taxRatio(结果保留两位小数,从小数点后第三位向上入一位)。
tax+poundage<min时,poundage=min–tax;5freezePoundage<poundage时,poundage=poundage-freezePoundage;6freezeTax<tax时,tax=tax-freezeTax;7buyAmt=tradeAmt+tax+poundage。
卖出(成交)的交易费用的计算和支付的可如下示例:
设第一次成交金额为tradeAmt_1,第二次为tradeAmt_2以此类推,第n次成交时,totalTradeAmt=tradeAmt_1+tradeAmt_2++tradeAmt_n,使用总交易金额来计算下面的手续费、税费,能避免按当次交易金额计算后有小数位时产生的累计误差。
tradeAmt=tradeAmt_n;
poundage=totalTradeAmt*poundageRatio(保留两位小数,从小数点后第三位向上入一位);
tax=totalTradeAmt*taxRatio(保留两位小数,从小数点后第三位向上入一位);
tax+poundage<min时,poundage=min–tax;设第一次扣除的手续费为poundage1,第二次为poundage_2以此类推,第n次成交时,hisPoundage=poundage_1+poundage_2++poundage_(n-1);poundage=poundage–hisPoundage;设第一次扣除的税费为poundage1,第二次为tax_2以此类推,第n次成交时,hisTax=tax_1+tax_2++tax_(n-1);tax=tax–hisTax;7sellAmt=tradeAmt-tax–poundage。
资金账户的账户锁的实现可如下:
首先,进行变量定义,具体定义一下变量:
锁失效时长(单位:毫秒)T1;等待锁超时时长(单位:毫秒)T2;系统当前时间(单位:毫秒,从1970至今的毫秒数)T3。
其次,如图6所示,基于定义的变量执行交易费用的计算及支付,包括:
步骤1:设用户账户对应的一个或多个资金账户的账户编号(accountId)作为账户锁的主键,假设accountId=“123”
步骤2:判断T2是否大于0,当T2大于0时,执行步骤3,否则跳出循环。
步骤3:执行T1=T3+T1+1的计算操作(锁下一次失效时间);
步骤4:查询支付账户的账户锁中是否存在主键名为“123”的键值对,若不存在则设置账户锁,并将账户锁的键值对中的主键设置为“123”该账户锁的键值对中的值设置为T1,跳出循环,当前线程获得账户锁。
步骤5:执行调用获取命令获得主键“123”的值设为T4。
步骤6:判断T4是否空且T4<T3;若是执行步骤7,若否则执行步骤8。
步骤7:执行设置命令,设置T1为“123”的新值,并同时返回主键“123”的旧值设为T5;
步骤8:判断T5是否为空且T5==T4,若是跳出循环当前线程获得账户锁。否则执行步骤9。
步骤9:执行T2-=100的计算;
步骤10:当前执行支付操作的线程休眠100毫秒,跳转到步骤2。
如图7所示,本示例提供一种交易费用的计费及支付方法,包括:
步骤S1:计算包括交易费用的各种待收支的费用;
步骤S2:判断是否已获得了的支付账户的账户锁,若已获得了则进入下一步骤,若未获得结束流程;
步骤S3:启动数据库事务;
步骤S4:基于计算的费用执行支付操作,以实现资金变更;
步骤S5:提交数据库事务;
步骤S6:释放之前获得的资金账户的账户锁。
在本示例中为了减少占用一个账户锁的时间,会提前完成交易费用的技术,在后续支付操作时,可以直接进行支付或收入处理即可,从而可以增加单位时间内响应的收支请求的个数。
委托买入的交易费用计费及支付方法可包括:
步骤1:执行委托买入计费算法,获得委托买入需冻结的交易金额、手续费、税费。
步骤2:尝试获取用户的资金账户锁,如果获取锁控制权则执行步骤3,否则超时退出。
步骤3:启动一个数据库事务。
步骤4:减少资金账户中的可用余额、增加冻结金额。
步骤5:分别增加资金变更记录和交易订单计费记录。
步骤6:提交所述数据库事务。
步骤7:释放资金账户的账户锁(如果已控制),执行步骤3至6异常时均需要执行当前步骤。
委托卖出:写入一条所有金额为0的交易订单计费记录。
买入成交时的交易费用计算及支付方法,包括:
步骤1:执行买入(成交)计费算法,获得委托买入需冻结的交易金额、手续费、税费。
步骤2:尝试获取用户的资金账户锁,如果获取锁控制权则执行步骤3,否则超时退出。
步骤3:启动一个数据库事务。
步骤4:减少用户资金账户中的冻结金额。
步骤5:增加用户资金变更记录,更新交易订单计费记录。
步骤6:增加交易平台账户的资金变更记录,记录交易平台应收的税费手续费。因为在税费及手续费的支付过程中,用户的账户与交易平台账户资金交割的关系是一个多对1的关系,所以在交易计费过程中不变更交易平台的账户资金,避免频繁竞争数据库中账户的行锁控制器引发阻塞。直到平台收市或其它非交易时刻再集中变更平台的交易账户资金。
步骤7:提交数据库事务。
步骤8:释放资金账户锁(如果已控制),执行步骤3至7异常时均需要执行当前步骤。
卖出成交的交易费用的计算及支付方法,包括:
步骤1:执行委托卖出计费算法,获得委托买入需冻结的交易金额、手续费、税费。
步骤2:启动一个数据库事务。
步骤3:增加用户资金账户中的可用余额。
步骤4:增加用户资金变更记录,更新交易订单计费记录。
步骤5:增加交易平台账户的资金变更记录,记录交易平台应收的税费手续费
步骤5:提交事务。
执行步骤2至5异常时均需要执行当前步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种交易费用的计算及支付方法,其特征在于,应用于交易平台中,包括:
接收收支请求,其中,所述收支请求包括:支付请求和/或收入请求;
判断所述收支请求指向的支付账户是否已配置了账户锁,其中,所述账户锁,用于控制所述支付账户在对应的有效时间内响应一个所述收支请求的支付操作,且不锁定所述支付账户被支入的收支请求响应;
若所述支付账户未配置账户锁,则配置所述支付账户的账户锁;
当有多个待响应的收支请求指向同一个所述支付账户时,为所述支付账户设置容纳收支请求的等待队列;
根据所述收支请求的调整因子,调整所述收支请求在所述等待队列中的位置;其中,所述调整因子是与对应的收支请求的当前允许处理时延和/或处理优先级相关的;
依次为所述等待队列中的收支请求分配账户锁;
在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作;
在完成所述支付操作之后或所述账户锁的有效时间失效后,解锁所述账户锁。
2.根据权利要求1所述的方法,其特征在于,
所述判断所述收支请求指向的支付账户是否已配置了账户锁,包括:
从共享内存空间读取所述支付账户的账户锁;
所述若所述支付账户未配置账户锁,则配置所述支付账户的账户锁,包括:
若未成功读取到所述支付账户的账户锁,则在所述共享内存空间配置所述账户锁。
3.根据权利要求1或2所述的方法,其特征在于,
所述方法还包括:
根据所述账户锁的已使用时长及所述账户锁的有效时长,确定所述账户锁的剩余有效时长;
按预设间隔更新所述账户锁的剩余有效时长。
4.根据权利要求1或2所述的方法,其特征在于,
所述方法包括:
若所述支付账户已配置账户锁,则读取所述账户锁的剩余有效时长;
根据所述剩余有效时长,在所述账户锁失效后,配置与当前所述收支请求对应的账户锁。
5.根据权利要求1或2所述的方法,其特征在于,
所述在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作,包括以下至少之一:
当所述支付账户为买方账户时,基于所述支付账户的资金数据执行所述支付操作,并根据所述支付操作的结果实时更新所述支付账户及接受支付的卖方账户的资金数据;
当所述支付请求涉及平台账户的收支操作时,实时记录所述收支操作以形成收支流水;当达到满足结算条件的结算时间时,根据所述收支流水更新所述平台账户的资金数据。
6.根据权利要求1或2所述的方法,其特征在于,
所述在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作,包括:
在所述账户锁对应的有效时间内,创建响应所述收支请求的数据库事务;
监控执行所述数据库事务的执行状况信息;
当所述数据库事务包括M笔支付操作时,将第m笔支付操作的操作结果写入到临时存储区域,其中,所述m为小于所述M的正整数;所述M为正整数;
当所述执行状况信息表明所述数据库事务的所述M笔支付操作都执行正常时,将所述临时存储区域的操作结果提交到数据库,其中,提交的所述操作结果,用于更新所述数据库中所述支付账户和收入账户的资金数据;
当所述执行状况信息表明所述数据库事务执行第m笔支付操作异常时,屏蔽所述临时存储区域内操作结果的提交。
7.根据权利要求1或2所述的方法,其特征在于,所述交易平台为数字资产交易平台的子平台;
所述在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作,包括以下至少之一:
在所述账户锁对应的有效时间内,计算买方账户的交易金额、买方手续费及买方税费,并从所述买方账户的一个或多个资金账户中,收取所述交易金额、买方手续非及买方税费;其中,所述买方手续费包括:买方佣金、买方服务费及买方官费的至少其中之一;
在所述账户锁对应的有效时间内,计算卖方账户的交易金额,卖方手续费及卖方税费;从所述交易金额中扣除卖方手续费及卖方税费之后,将卖方收入提交到所述卖方账户的一个或多个资金账户中;卖方手续费包括:卖方佣金、卖方服务费及卖方官费的至少其中之一;
在所述账户锁对应的有效时间内,计算买方手续费、卖方手续费、买方税费及卖方税费,并提交到平台账户。
8.一种交易费用的计算及支付装置,其特征在于,应用于交易平台中,包括:
接收单元,用于接收收支请求,其中,所述收支请求包括:支付请求和/或收入请求;
判断单元,用于判断所述收支请求指向的支付账户是否已配置了账户锁,其中,所述账户锁,用于控制所述支付账户在对应的有效时间内响应一个所述收支请求的支付操作,且不锁定所述支付账户被支入的收支请求响应;
配置单元,用于若所述支付账户未配置账户锁,则配置所述支付账户的账户锁;
还用于当有多个待响应的收支请求指向同一个所述支付账户时,为所述支付账户设置容纳收支请求的等待队列;根据所述收支请求的调整因子,调整所述收支请求在所述等待队列中的位置;其中,所述调整因子是与对应的收支请求的当前允许处理时延和/或处理优先级相关的;依次为所述等待队列中的收支请求分配账户锁;
操作单元,用于在所述账户锁对应的有效时间内,对所述支付账户执行与所述收支请求对应的支付操作;
解锁单元,用于在完成所述支付操作之后或所述账户锁的有效时间失效后,解锁所述账户锁。
9.一种交易平台, 包括:一个或多个相互连接的服务节点;所述服务节点包括:
通信接口,用于通信;
存储器,用于存储信息;
处理器,分别于所述通信接口及存储器连接,用于通过执行所述存储器中存储的计算机程序,实现权利要求1至7任一项提供的交易费用的计算及支付方法。
10.一种交易平台,包括:一个或多个相互连接的服务节点;所述服务节点包括:处理器及计算机程序;
所述处理器,用于通过执行所述计算机程序,实现权利要求1至7任一项提供的交易费用的计算及支付方法。
11.一种计算机存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后,能够实现权利要求1至7任一项提供的交易费用的计算及支付方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710516583.7A CN107358425B (zh) | 2017-06-29 | 2017-06-29 | 交易费用的计算及支付方法和装置、交易平台及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710516583.7A CN107358425B (zh) | 2017-06-29 | 2017-06-29 | 交易费用的计算及支付方法和装置、交易平台及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107358425A CN107358425A (zh) | 2017-11-17 |
CN107358425B true CN107358425B (zh) | 2021-04-20 |
Family
ID=60274009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710516583.7A Active CN107358425B (zh) | 2017-06-29 | 2017-06-29 | 交易费用的计算及支付方法和装置、交易平台及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107358425B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108540324B (zh) * | 2018-04-12 | 2021-05-25 | 网易(杭州)网络有限公司 | 登录游戏系统的方法、装置和系统 |
CN109246077B (zh) * | 2018-08-01 | 2021-06-29 | 广州唯品会信息科技有限公司 | 分布式并发交易校验方法、装置和计算机存储介质 |
CN109670807A (zh) * | 2018-11-20 | 2019-04-23 | 平安科技(深圳)有限公司 | 扣款控制方法、装置、设备及可读存储介质 |
CN109919623B (zh) * | 2019-02-28 | 2021-08-13 | 泰康保险集团股份有限公司 | 防止账户透支方法、装置、设备及可读存储介质 |
CN111047303A (zh) * | 2019-12-09 | 2020-04-21 | 湖北碳排放权交易中心有限公司 | 一种碳排放权交易清结算方法及系统 |
CN112598382B (zh) * | 2020-12-23 | 2024-01-23 | 深圳市富途网络科技有限公司 | 业务资源分配方法、装置、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431561A (zh) * | 2007-11-05 | 2009-05-13 | 中国移动通信集团公司 | 账户锁定方法、系统及相关装置 |
CN101477667A (zh) * | 2009-01-19 | 2009-07-08 | 阿里巴巴集团控股有限公司 | 交易数据处理方法及系统 |
CN103793843A (zh) * | 2012-10-26 | 2014-05-14 | 阿里巴巴集团控股有限公司 | 一种账户数据的处理方法和装置 |
WO2015065695A1 (en) * | 2013-10-28 | 2015-05-07 | Quisk, Inc. | Account locking using transaction codes |
CN105847308A (zh) * | 2015-01-12 | 2016-08-10 | 阿里巴巴集团控股有限公司 | 一种资源信息的转移处理方法和装置 |
CN106656969A (zh) * | 2016-10-13 | 2017-05-10 | 上海众人网络安全技术有限公司 | 一种支付状态管理方法及其系统、一种网络支付系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7174318B2 (en) * | 2000-03-28 | 2007-02-06 | Richard Adelson | Method and system for an online-like account processing and management |
CN102394867A (zh) * | 2011-10-10 | 2012-03-28 | 深圳市金槌拍卖行有限公司 | 网络并发通讯请求转串行队列技术 |
-
2017
- 2017-06-29 CN CN201710516583.7A patent/CN107358425B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431561A (zh) * | 2007-11-05 | 2009-05-13 | 中国移动通信集团公司 | 账户锁定方法、系统及相关装置 |
CN101477667A (zh) * | 2009-01-19 | 2009-07-08 | 阿里巴巴集团控股有限公司 | 交易数据处理方法及系统 |
CN103793843A (zh) * | 2012-10-26 | 2014-05-14 | 阿里巴巴集团控股有限公司 | 一种账户数据的处理方法和装置 |
WO2015065695A1 (en) * | 2013-10-28 | 2015-05-07 | Quisk, Inc. | Account locking using transaction codes |
CN105847308A (zh) * | 2015-01-12 | 2016-08-10 | 阿里巴巴集团控股有限公司 | 一种资源信息的转移处理方法和装置 |
CN106656969A (zh) * | 2016-10-13 | 2017-05-10 | 上海众人网络安全技术有限公司 | 一种支付状态管理方法及其系统、一种网络支付系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107358425A (zh) | 2017-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107358425B (zh) | 交易费用的计算及支付方法和装置、交易平台及存储介质 | |
US20220366491A1 (en) | Incrementally perfected digital asset collateral wallet | |
KR102469300B1 (ko) | 스마트 계약의 토큰화된 제어를 위한 시스템 및 방법 | |
AU2022201095A1 (en) | Resource transfer system | |
KR20220013548A (ko) | 토큰화된 자산과 관련된 데이터를 관리하기 위한 데이터 저장 및 검색 시스템을 구성하는 시스템, 방법 및 저장장치 | |
US20190340685A1 (en) | Blockchain-based asset and immutable real-time intelligent securities platform | |
CN112132662B (zh) | 一种商品秒杀方法、装置、计算机设备及存储介质 | |
WO2012161720A1 (en) | Supply chain finance system | |
US20160203551A1 (en) | Method and system for using payment transaction data in loan sourcing | |
CN110659887A (zh) | 一种基于区块链的自动交易处理系统和方法 | |
US20160034884A1 (en) | Method and system for chargeback of counterfeit goods | |
CN111260362A (zh) | 一种区块链网络的信息处理方法及装置、存储介质 | |
CN115578199A (zh) | 股权激励中的行权数据处理方法、装置、设备、介质及产品 | |
CN112465628A (zh) | 数据核销方法、装置、电子设备和存储介质 | |
CN111861735A (zh) | 用于融资的信息处理方法、装置、系统及介质 | |
KR102473371B1 (ko) | 영상 콘텐츠에 대한 투자 및 소유권을 거래하는 방법, 장치 및 컴퓨터-판독 가능 기록 매체 | |
KR102113423B1 (ko) | 보험을 이용한 암호화폐 거래 방법 | |
CN112330448A (zh) | 资金管理方法、终端设备及存储介质 | |
CN111415263A (zh) | 数据匹配方法和装置 | |
US11769151B2 (en) | Methods and systems for rate-limiting control of transaction processing | |
KR20220048967A (ko) | P2p 기반 매출채권 유동화 시스템 및 그 방법 | |
CN114077598A (zh) | 一种数据处理方法以及相关设备 | |
JP6426573B2 (ja) | 弁済代行支援システムおよび弁済代行支援方法 | |
CN112634009A (zh) | 一种产品的推送方法、装置、存储介质及电子设备 | |
CN113627909A (zh) | 一种基于区块链的交易费支付方法、设备及储存介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |