CN113592506B - 重复支付处理方法、装置、电子设备和存储介质 - Google Patents
重复支付处理方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113592506B CN113592506B CN202111132974.1A CN202111132974A CN113592506B CN 113592506 B CN113592506 B CN 113592506B CN 202111132974 A CN202111132974 A CN 202111132974A CN 113592506 B CN113592506 B CN 113592506B
- Authority
- CN
- China
- Prior art keywords
- payment
- order
- message
- transaction information
- purchase
- 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/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/407—Cancellation of a transaction
-
- 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)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开提供一种重复支付处理方法、装置、电子设备和存储介质,包括:根据订单生成支付消息,将所述支付消息发送给用户;接收用户发送的支付成功消息,根据所述支付成功消息,完成支付业务并相应的生成交易信息;根据所述交易信息的内容判断所述支付业务是否为首次支付,响应于确定所述支付业务不是首次支付,将所述交易信息的状态标记为异常,并发起退款操作。本公开通过判断支付业务是否完成,判断是否为重复支付的订单,自动发起退款操作,不需要用户进行退款操作,也不需要人工查找重复支付订单手动退款,为用户使用提供了便利。
Description
技术领域
本公开涉及互联网数字支付技术领域,尤其涉及一种重复支付处理方法、装置、电子设备和存储介质。
背景技术
随着网络的发展,网上购物的用户越来越多,网上支付活动日益频繁,通常付款需要使用第三方的支付系统,用户在支付过程中由于各种原因中断,再次发起支付或者同一个账号不同设备终端下,拉起第三方支付系统,可能会造成重复支付。在发生重复支付的情况时,通常需要用户进行询问,发起退款,或者人工进行支付检查,退款复杂,用户使用体验差。
发明内容
有鉴于此,本公开的目的在于提出一种重复支付处理方法、装置、电子设备和存储介质。
基于上述目的,本公开提供了一种重复支付处理方法,包括:
根据订单生成支付消息,将所述支付消息发送给用户;
接收用户发送的支付成功消息,根据所述支付成功消息,完成支付业务并相应的生成交易信息;
根据所述交易信息的内容判断所述支付业务是否为首次支付,响应于确定所述支付业务不是首次支付,将所述交易信息的状态标记为异常,并发起退款操作。
基于同一发明构思,本公开还提供了一种重复支付处理装置,包括:
支付处理模块,用于根据订单生成支付消息,将所述支付消息发送给用户;
交易生成模块,用于接收用户发送的支付成功消息,根据所述支付成功消息,完成支付业务并相应的生成交易信息;
异常判断模块,用于根据所述交易信息的内容判断所述支付业务是否为首次支付,响应于确定所述支付业务不是首次支付,将所述交易信息的状态标记为异常,并发起退款操作。
基于同一发明构思,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任意一项所述的方法。
基于同一发明构思,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行如上任一所述方法。
从上面所述可以看出,本公开提供的重复支付处理方法,通过订单生成支付消息,把支付消息发送给用户,用户接收支付消息,进行付款操作,在用户支付成功后,通过回调函数接收支付成功的消息,然后根据支付成功消息生成一个交易信息,根据这个交易信息判断这个支付业务是不是首次支付,如果不是首次支付,将这次的交易信息标记为异常,然后发起退款操作。通过判断支付业务是否完成,判断是否为重复支付的订单,自动发起退款操作,不需要用户进行退款操作,也不需要人工查找重复支付订单手动退款,为用户使用提供了便利。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例的重复支付处理方法流程示意图;
图2为本公开实施例的生成所述订单流程示意图;
图3为本公开实施例的重复支付处理装置结构示意图;
图4为本公开实施例的电子设备结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了方便理解,下面对本申请实施例中涉及的名词进行解释:
Redis:远程字典服务(Remote Dictionary Server),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
HangFire :执行定时任务框架。是一个开源且商业免费使用的工具函数库。可以让你非常容易地在ASP.NET应用(也可以不在ASP.NET应用)中执行多种类型的后台任务,而无需自行定制开发和管理基于Windows Service后台任务执行器。且任务信息可以被持久保存。内置提供集成化的控制台。
ASP.NET:是微软公司推出的新一代脚本语言。具备开发网站应用程序的一切解决方案,包括验证、缓存、状态管理、调试和部署等全部功能。在代码撰写方面特色是将页面逻辑和业务逻辑分开,它分离程序代码与显示的内容,让丰富多彩的网页更容易撰写。同时使程序代码看起来更洁净、更简单。
Windows Service:Windows服务,能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。
RabbitMQ:高级消息队列协议。实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。
AMQP:高级消息队列协议(Advanced Message Queuing Protocol),一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。
SqlServer UNIQUE --唯一索引约束提供了唯一性的保证。
接口幂等性:接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的。
API:应用程序编程接口(application programing interface)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。 [1]用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
WeBAPI:今天的web计算平台包含了广泛的功能,其中的大部分均可以通过API(应用程序编程接口)访问。
oracle数据库:Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。
SqlServer:美国Microsoft公司推出的一种关系型数据库系统。SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统。
如如背景技术部分所述,在相关技术中,用户在支付过程中由于各种原因中断,再次发起支付或者同一个账号不同设备终端下,拉起第三方支付系统,可能会造成重复支付。在发生重复支付的情况时,通常需要用户进行询问,发起退款,或者人工进行支付检查,退款复杂,用户使用体验不好。
针对上述相关技术存在的问题,本公开实施例提供了一种重复支付处理方法,通过订单生成支付消息,把支付消息发送给用户,用户接收支付消息,进行付款操作,在用户支付成功后,通过回调函数接收支付成功的消息,然后根据支付成功消息生成一个交易信息,根据这个交易信息判断这个支付业务是不是首次支付,如果不是首次支付,将这次的交易信息标记为异常,然后发起退款操作。通过重复支付处理方法,判断重复支付的订单,自动发起退款操作,不需要用户进行退款操作,也不需要人工查找重复支付订单手动退款,为用户使用提供了便利。
以下,通过具体的实施例进一步详细说明本公开的技术方案。
首先,本说明书一个或多个实施例提供了一种重复支付处理方法。参照图1,所述重复支付处理方法,包括以下步骤:
步骤S101,根据订单生成支付消息,将所述支付消息发送给用户。
本公开实施例中,用户下单购买,下单后生成订单,订单中包括用户购买的物品、唯一的订单标识(订单号)、物品的单价、物品的数量和物品的总价等,根据这个订单会生成一个支付消息,同时,会提供给第三方支付系统一个回调地址,用户通过支付消息,进行付款操作,然后通过回调地址接收用户发送的支付成功消息。其中,支付消息表示向用户发起的收款消息,包括:用户购买的物品、唯一的订单标识(订单号)、物品的单价、物品的数量和物品的总价等;支付成功消息表示用户已经成功付款,包含订单的唯一订单标识、支付消息的编号、支付交易流水号和付款成功的标识,每次付款都会生成一个支付消息编号,同一个订单付了两次款,每次的支付消息编号都不同,每一个订单对应一个支付交易流水号。
通过回调地址,接收每次支付成功的消息,保证每次支付成功都有记录,保证支付成功的获取。
在此基础上,根据订单生成支付消息,之前还包括:接收用户发送的购买消息,根据所述购买消息生成所述订单。
首先用户进行购买操作,购买操作会生成一个购买消息,购买消息中,包含用户购买的物品、物品的单价、物品的数量和物品的总价等,然后会根据购买消息,生成一个订单。
在此基础上,根据图2所示,接收用户发送的购买消息,根据所述购买消息生成所述订单,包括:
步骤S201,接收所述购买消息,根据所述购买消息生成购买订单,将所述购买订单写入缓存区;
步骤S202,判断所述购买订单的订单标识是否唯一并判断订单物品的库存是否扣减成功;
步骤S203,响应于确定所述订单标识唯一且所述订单物品的库存扣减成功,生成所述订单;
步骤S204,将所述订单放入消息队列,通过消费者线程从所述消息队列中消费所述订单,并将所述订单写入数据库。
用户发起购买请求,生成一个购买消息,购买消息通过WeBAPI将生成一个购买订单,其中,购买订单中包括用户购买的物品、唯一的订单标识(订单号)、物品的单价、物品的数量和物品的总价等。将购买订单存入缓存区,在缓存区中进行购买订单的核验,对比购买订单的订单标识(订单号)是不是唯一,假设同一个订单标识有两个购买订单,将其中一个购买订单丢弃,然后获取购买订单中的物品和物品的数量,在库存中对订单的物品进行扣减,物品扣减成功,标识库存数量充足,将购买订单生成订单,将订单通过消息队列写入数据库。如果库存中的物品扣减不成功,生成一个库存不足的消息,向用户发送库存数据不足的消息。其中,缓存区可以为redis缓存区,数据库可以为SqlServer数据库、oracle数据库等。
在高并发访问系统的情况下,但随着数据量的增大、访问的集中,就会出现数据的负担加重、数据库响应缓慢、网站打开延迟,甚至在创建订单的时候造成接口幂等性产生重复订单。利用Redis缓存区和消息队列,能够解决访问速度慢,生成订单慢的问题,在数据库中对订单标识唯一性的判断,保证了订单的唯一生成,在库存中对订单的物品进行扣减,扣减不成功的订单,直接反馈给用户,可以防止出现,高并发情况下,库存扣减有延迟,没有库存但是也生成了订单的情况。
在此基础上,判断订单物品的库存是否扣减成功,具体包括:使用increment计数工具对订单物品的库存进行扣减,判断订单物品的库存数量;响应于确定库存数量大于等于0,所述订单物品的库存扣减成功;响应于确定库存数量小于0,所述订单物品的库存扣减失败。
数据库中通过 increment计数工具进行库存的扣减,increment计数工具的扣减操作是一个原子操作,原子操作具有的就是原子性。原子性的定义为:要么全部执行完,要么什么都不执行,要么执行完一个扣减操作,要么执行扣减操作的过程中被打断,则回退到未执行。它可以避免并发情况下多个线程对库存进行扣减时产生的数据不一致的问题。比如此时库存为1,进行扣减后为0,扣减成功,而再进行减库存时,库存会变为-1,这里会进行判断,判断库存是否大于等于0,如果大于等于则表示扣减成功,小于0则表示扣减失败。利用缓存区的原子性操作保证了订单的唯一生成。
在此基础上,将所述订单写入数据库,具体包括:在数据库中对所述订单的订单标识进行检索,以确定数据库中是否存在相同的所述订单标识;响应于无相同的所述订单标识,将所述订单存入数据库。
对存入数据库中的数据,根据订单标识,建立一个唯一索引,把新生成的订单存入数据库的时候,先对数据库中的索引进行检索,没有相同的订单标识,将订单存入数据库,存在相同订单标识,将订单数据丢弃,通过数据库索引的检索,判断数据库中是否存在相同的数据标识,进行二次判断,保证订单的唯一生成。
步骤S102,接收用户发送的支付成功消息,根据所述支付成功消息,完成支付业务并相应的生成交易信息。
本公开实施例中,接收到用户发送的支付成功消息,根据这个支付成功消息,完成订单相应的支付业务,然后再生成一个交易信息。其中,支付消息可以用来判断是否为重复收款的消息,包括:支付成功消息等;支付业务为支付的流程,包括生成支付消息,接收支付成功消息,绑定支付成功消息三个步骤。
在此基础上,根据所述支付成功消息,完成支付业务并相应的生成交易信息,包括:判断所述订单是否绑定所述支付成功消息;响应于确定所述订单未绑定所述支付成功消息,将所述支付成功消息与所述订单绑定,完成所述支付业务;将所述支付成功消息封装为所述交易信息;响应于确定所述订单已绑定所述支付成功消息,确定所述支付业务已经完成,生成异常业务处理信息;将所述支付成功消息和所述异常业务处理消息封装为所述交易信息。
当用户订单已经支付成功后,由于其他人为中断或者网络问题造成第二次支付,第三方支付系统会扣除两次钱款,首次支付完成后,会将这次支付的支付成功消息,绑定到对应的订单,将支付成功消息绑定后,这个订单的支付业务完成。再次支付完成后,虽然支付成功,第三方已经进行扣款操作,但是对应订单已经绑定了首次付款的支付成功消息,支付业务已经完成,无法进行支付业务流程,此时,就会生成一个异常业务处理信息。这样就可以表示出支付成功但是支付业务异常的付款行为。
如果成功进行支付业务的流程,则不会生成异常业务处理信息,将支付成功消息封装为交易信息,如果无法进行支付业务流程,则会生成异常业务处理信息,将异常业务处理信息和支付成功消息一起封装为交易信息。
步骤S103,根据所述交易信息的内容判断所述支付业务是否为首次支付,响应于确定所述支付业务不是首次支付,将所述交易信息的状态标记为异常,并发起退款操作。
本公开实施例中,首次支付的交易信息和再次支付的交易信息是不同的,根据交易信息的内容,可以判断此次支付是不是首次支付,假设此次支付不是首次支付,则将此次的交易信息的状态标记为异常,通过HangFire定时任务定时检查交易信息状态异常的支付行为,并通过微信或者支付宝退款接口来发起退款。
在此基础上,根据所述交易信息的内容判断所述支付业务是否为首次支付,包括:判断所述交易信息的内容中是否存在所述异常业务处理信息;响应于确定所述交易信息的内容中存在异常业务处理消息,确定不是首次支付成功。
首次支付的交易信息和再次支付的交易信息是不同的,首次支付的交易信息中不包含异常业务处理信息,当交易信息中有异常业务处理信息的时候,当前交易信息的支付行为,不是首次支付。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种重复支付处理装置。
参考图3,所述重复支付处理装置,包括:
支付处理模块301,用于根据订单生成支付消息,将所述支付消息发送给用户;
交易生成模块302,用于接收用户发送的支付成功消息,根据所述支付成功消息,完成支付业务并相应的生成交易信息;
异常判断模块303,用于根据所述交易信息的内容判断所述支付业务是否为首次支付,响应于确定所述支付业务不是首次支付,将所述交易信息的状态标记为异常,并发起退款操作。
交易生成模块302,还可以用于判断所述订单是否绑定所述支付成功消息;
响应于确定所述订单未绑定所述支付成功消息,将所述支付成功消息与所述订单绑定,完成所述支付业务;
将所述支付成功消息封装为所述交易信息;
响应于确定所述订单已绑定所述支付成功消息,确定所述支付业务已经完成,生成异常业务处理信息;
将所述支付成功消息和所述异常业务处理消息封装为所述交易信息。
异常判断模块303,还可以用于判断所述交易信息的内容中是否存在所述异常业务处理信息;
响应于确定所述交易信息的内容中存在异常业务处理消息,确定不是首次支付成功。
重复支付处理装置,还包括,订单生成模块,用于接收用户发送的购买消息,根据所述购买消息生成所述订单。
订单生成模块,还可以用于接收所述购买消息,根据所述购买消息生成购买订单,将所述购买订单写入缓存区;
判断所述购买订单的订单标识是否唯一并判断订单物品的库存是否扣减成功;
响应于确定所述订单标识唯一且所述订单物品的库存扣减成功,生成所述订单;将所述订单放入消息队列,通过消费者线程从所述消息队列中消费所述订单,并将所述订单写入数据库。
订单生成模块,还可以用于使用increment计数工具对订单物品的库存进行扣减,判断订单物品的库存数量;
响应于确定库存数量大于等于0,所述订单物品的库存扣减成功;
响应于确定库存数量小于0,所述订单物品的库存扣减失败。
订单生成模块,还可以用于在数据库中对所述订单的订单标识进行检索,以确定数据库中是否存在相同的所述订单标识;
响应于无相同的所述订单标识,将所述订单存入数据库。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的重复支付处理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的重复支付处理方法。
图4示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线 1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的重复支付处理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的重复支付处理方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的重复支付处理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (7)
1.一种重复支付处理方法,包括:
接收用户发送的购买消息,根据所述购买消息唯一生成订单,包括:
接收所述购买消息,根据所述购买消息生成购买订单,将所述购买订单写入缓存区;
判断所述购买订单的订单标识是否唯一并判断订单物品的库存是否扣减成功;
响应于确定所述订单标识唯一且所述订单物品的库存扣减成功,生成所述订单;
将所述订单放入消息队列,通过消费者线程从所述消息队列中消费所述订单,并将所述订单写入数据库;
根据订单生成支付消息,将所述支付消息发送给用户;
接收用户发送的支付成功消息,根据所述支付成功消息,完成支付业务并相应的生成交易信息,包括:
判断所述订单是否绑定所述支付成功消息;
响应于确定所述订单未绑定所述支付成功消息,将所述支付成功消息与所述订单绑定,完成所述支付业务;
将所述支付成功消息封装为所述交易信息;
响应于确定所述订单已绑定所述支付成功消息,确定所述支付业务已经完成,生成异常业务处理信息;
将所述支付成功消息和所述异常业务处理信息封装为所述交易信息;
根据所述交易信息的内容判断所述支付业务是否为首次支付,响应于确定所述支付业务不是首次支付,将所述交易信息的状态标记为异常,并发起退款操作。
2.根据权利要求1所述的方法,其中,所述根据所述交易信息的内容判断所述支付业务是否为首次支付,包括:
判断所述交易信息的内容中是否存在所述异常业务处理信息;
响应于确定所述交易信息的内容中存在异常业务处理信息,确定不是首次支付成功。
3.根据权利要求1所述的方法,其中,所述判断订单物品的库存是否扣减成功,包括:
使用increment计数工具对订单物品的库存进行扣减,判断订单物品的库存数量;
响应于确定库存数量大于等于0,所述订单物品的库存扣减成功;
响应于确定库存数量小于0,所述订单物品的库存扣减失败。
4.根据权利要求1所述的方法,其中,所述将所述订单写入数据库,包括:
在数据库中对所述订单的订单标识进行检索,以确定数据库中是否存在相同的所述订单标识;
响应于无相同的所述订单标识,将所述订单存入数据库。
5.一种重复支付处理装置,包括:
订单生成模块,用于接收用户发送的购买消息,根据所述购买消息生成所述订单,包括:
接收所述购买消息,根据所述购买消息生成购买订单,将所述购买订单写入缓存区;
判断所述购买订单的订单标识是否唯一并判断订单物品的库存是否扣减成功;
响应于确定所述订单标识唯一且所述订单物品的库存扣减成功,生成所述订单;
将所述订单放入消息队列,通过消费者线程从所述消息队列中消费所述订单,并将所述订单写入数据库;
支付处理模块,用于根据订单生成一个支付消息,将所述支付消息发送给用户;
交易生成模块,用于接收用户发送的支付成功消息,根据所述支付成功消息,完成支付业务并相应的生成交易信息,包括:
判断所述订单是否绑定所述支付成功消息;
响应于确定所述订单未绑定所述支付成功消息,将所述支付成功消息与所述订单绑定,完成所述支付业务;
将所述支付成功消息封装为所述交易信息;
响应于确定所述订单已绑定所述支付成功消息,确定所述支付业务已经完成,生成异常业务处理信息;
将所述支付成功消息和所述异常业务处理信息封装为所述交易信息;
异常判断模块,用于根据所述交易信息的内容判断所述支付业务是否为首次支付,响应于确定所述支付业务不是首次支付,将所述交易信息的状态标记为异常,并发起退款操作。
6.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至4任意一项所述的方法。
7.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行权利要求1至4任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111132974.1A CN113592506B (zh) | 2021-09-27 | 2021-09-27 | 重复支付处理方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111132974.1A CN113592506B (zh) | 2021-09-27 | 2021-09-27 | 重复支付处理方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113592506A CN113592506A (zh) | 2021-11-02 |
CN113592506B true CN113592506B (zh) | 2022-01-25 |
Family
ID=78242217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111132974.1A Active CN113592506B (zh) | 2021-09-27 | 2021-09-27 | 重复支付处理方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113592506B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114862401A (zh) * | 2022-03-11 | 2022-08-05 | 山东浪潮通软信息科技有限公司 | 一种支付异常的处理方法、装置、设备及介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512869A (zh) * | 2015-11-26 | 2016-04-20 | 中国建设银行股份有限公司 | 防止重复支付的支付系统、方法以及电商系统 |
CN106651333A (zh) * | 2016-09-20 | 2017-05-10 | 联动优势电子商务有限公司 | 一种防止重复支付的方法和装置 |
CN108717652B (zh) * | 2018-03-30 | 2021-06-11 | 北京三快在线科技有限公司 | 订单处理系统及方法、订单服务端、第二客户端 |
CN108734457B (zh) * | 2018-04-04 | 2023-11-07 | 首汽租赁有限责任公司 | 一种统一收银系统下的退款方法 |
CN109359996A (zh) * | 2018-10-16 | 2019-02-19 | 翟红鹰 | 防止重复付款的支付方法、交易平台、终端及存储介质 |
CN109919588A (zh) * | 2019-02-27 | 2019-06-21 | 深圳市买买提信息科技有限公司 | 一种防止重复支付的方法及设备 |
CN109816407A (zh) * | 2019-02-27 | 2019-05-28 | 深圳乐信软件技术有限公司 | 一种退款处理方法、装置、设备及存储介质 |
CN110111095B (zh) * | 2019-04-25 | 2021-10-22 | 银清科技有限公司 | 支付交易判重方法及支付系统 |
CN112053149A (zh) * | 2020-08-06 | 2020-12-08 | 中信银行股份有限公司 | 一种防止重复支付的方法、装置、电子设备和可读存储介质 |
CN112396420A (zh) * | 2020-12-11 | 2021-02-23 | 四川长虹电器股份有限公司 | 自动处理重复支付的系统及方法 |
-
2021
- 2021-09-27 CN CN202111132974.1A patent/CN113592506B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113592506A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10824981B2 (en) | Transaction orchestration for microservice | |
US8156137B2 (en) | Data processing systems and methods | |
US8490052B2 (en) | Declarative programming model for authoring and execution control and data flow for resource oriented system | |
CN109359118B (zh) | 一种数据写入方法及装置 | |
US9158555B2 (en) | Efficient serialization of mutable objects | |
CN110020383B (zh) | 一种页面数据请求处理方法及装置 | |
CN111506580B (zh) | 一种基于中心化块链式账本的交易存储方法 | |
CN113592506B (zh) | 重复支付处理方法、装置、电子设备和存储介质 | |
CN111930786A (zh) | 资源获取请求处理系统、方法及装置 | |
CN111523886A (zh) | 一种业务处理的方法及装置 | |
US10394690B1 (en) | Serialize view model for debugging and application support | |
CN106970872B (zh) | 信息埋点方法及装置 | |
EP4191492A1 (en) | Transaction engine | |
CN112540772B (zh) | 应用发布方法及其系统、电子设备、存储介质 | |
CN111242731B (zh) | 一种业务执行的方法及装置 | |
US9232388B2 (en) | Initiation of wireless service | |
CN113592470A (zh) | 业务处理方法、装置、电子设备以及存储介质 | |
CN113850685A (zh) | 用于实时理算的方法、装置、服务器和介质 | |
CN113641633A (zh) | 文件处理方法、装置、电子设备、介质和计算机程序 | |
CN112596781A (zh) | 一种业务执行以及业务配置方法及装置 | |
CN108399223B (zh) | 一种数据获取方法、装置及电子设备 | |
CN113448960A (zh) | 一种导入表格文件的方法和装置 | |
CN113892084A (zh) | 调度任务的存储器高效动态推迟 | |
EP4354315A1 (en) | Request handling in a multi-protocol cloud environment | |
CN110837367A (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 |