CN107657434A - 游戏充值支付结果的通知方法、装置和网关设备 - Google Patents
游戏充值支付结果的通知方法、装置和网关设备 Download PDFInfo
- Publication number
- CN107657434A CN107657434A CN201710941199.1A CN201710941199A CN107657434A CN 107657434 A CN107657434 A CN 107657434A CN 201710941199 A CN201710941199 A CN 201710941199A CN 107657434 A CN107657434 A CN 107657434A
- Authority
- CN
- China
- Prior art keywords
- payment result
- order
- notified
- payment
- money
- 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.)
- Pending
Links
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/02—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
- G06Q20/027—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP] involving a payment switch or gateway
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
- A63F13/792—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories for payment purposes, e.g. monthly subscriptions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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/22—Payment schemes or models
- G06Q20/28—Pre-payment schemes, e.g. "pay before"
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- Strategic Management (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种游戏充值支付结果的通知方法、装置和网关设备;其中,该方法应用于网关,网关与支付渠道侧和游戏侧分别连接,方法包括:接收来自支付渠道侧的订单的支付结果;当支付结果合法时,将支付结果保存为待通知订单,写入Redis存储区;根据优先级参数,将支付结果通知至游戏侧。本发明通过设置Redis存储区,网关可以以异步的形式将支付渠道发送的支付结果通知至游戏侧,提高了网关处理大量订单时的峰值处理能力,进而使游戏充值支付结果的通知方式更加可靠;同时,对发送失败的待支付订单再次写入Redis存储区进行重发的过程,进一步提高了游戏充值支付结果的通知方式的容错性和可靠性。
Description
技术领域
本发明涉及游戏充值技术领域,尤其是涉及一种游戏充值支付结果的通知方法、装置和网关设备。
背景技术
游戏充值业务涉及游戏、游戏充值网关、支付渠道等部分;其中,游戏充值网关为游戏充值业务的核心,游戏为游戏充值网关的下游,支付渠道为游戏充值网关的上游。游戏充值网关的功能可概括地划分为:将游戏充值请求递交至支付渠道、将支付渠道的支付结果通知至游戏。
现有方式中,游戏充值网关在接收到支付渠道的支付结果后,采取同步的方式将支付结果通知至游戏,完成后再将处理结果返回给支付渠道。这种同步方式通知游戏支付结果,可能会由于网络故障、游戏接口故障、游戏接口处理延时等原因造成支付结果不能及时返回给支付渠道,可靠性较低。
针对上述游戏充值支付结果的通知方式可靠性较低的问题,尚未提出有效的解决方案。
发明内容
有鉴于此,本发明的目的在于提供一种游戏充值支付结果的通知方法、装置和网关设备,以提高网关处理大量订单时的峰值处理能力,进而使游戏充值支付结果的通知方式更加可靠。
第一方面,本发明实施例提供了一种游戏充值支付结果的通知方法,方法应用于网关,网关与支付渠道侧和游戏侧分别连接,方法包括:接收来自支付渠道侧的订单的支付结果;当支付结果合法时,将支付结果保存为待通知订单,写入Redis存储区;其中,待通知订单包括支付结果和支付结果的优先级参数;优先级参数包括支付结果的通知时间和/或通知频率;根据优先级参数,将支付结果通知至游戏侧。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,上述当支付结果合法时,将支付结果保存为待通知订单,写入Redis存储区的步骤,包括:从支付结果中提取支付结果的来源、支付状态和支付金额;其中,来源包括生成支付结果的支付平台;支付状态包括支付成功或支付失败;支付金额包括用户实际支付的金额;判断支付结果的来源是否合法;如果合法,判断支付结果的支付状态是否是支付成功;如果是支付成功,将订单的支付状态设置为已支付,将订单的支付金额设置为实际支付的金额;将支付结果保存为待通知订单,写入Redis存储区。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,上述根据优先级参数,将支付结果通知至游戏侧的步骤,包括:从Redis存储区中读取优先级参数满足设定条件的多个待通知订单;将多个待通知订单分配至处于空闲状态的子进程,以使子进程将待通知订单对应的支付结果发送至游戏侧。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,上述子进程将待通知订单对应的支付结果发送至游戏侧的步骤,包括:子进程向游戏侧发送支付结果;监测是否接收到游戏侧发送的支付结果对应的通知接收反馈信息;如果是,将订单的通知状态设置为已通知;如果否,将支付结果对应的待通知订单再次写入Redis存储区。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,上述子进程将待通知订单对应的支付结果发送至游戏侧的步骤,还包括:多个子进程之间以并发的方式,执行第一方面的第三种可能的实施方式的方法。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,上述从Redis存储区中读取优先级参数满足设定条件的多个待通知订单的步骤,包括:根据优先级参数,为每个待通知订单设置优先级;从Redis存储区中提取优先级满足设定阈值的多个待通知订单。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,上述从Redis存储区中读取优先级参数满足设定条件的多个待通知订单的步骤之前,方法还包括:初始化待通知订单的处理参数;其中,处理参数包括休眠时间、同时处理待通知订单的最大数量和待通知订单中的通知频率。
第二方面,本发明实施例提供了一种游戏充值支付结果的通知装置,装置设置于网关,网关与支付渠道侧和游戏侧分别连接,装置包括:接收模块,用于接收来自支付渠道侧的订单的支付结果;写入模块,用于当支付结果合法时,将支付结果保存为待通知订单,写入Redis存储区;其中,待通知订单包括支付结果和支付结果的优先级参数;优先级参数包括支付结果的通知时间和/或通知频率;通知模块,用于根据优先级参数,将支付结果通知至游戏侧。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,上述写入模块,还用于:从支付结果中提取支付结果的来源、支付状态和支付金额;其中,来源包括生成支付结果的支付平台;支付状态包括支付成功或支付失败;支付金额包括用户实际支付的金额;判断支付结果的来源是否合法;如果合法,判断支付结果的支付状态是否是支付成功;如果是支付成功,将订单的支付状态设置为已支付,将订单的支付金额设置为实际支付的金额;将支付结果保存为待通知订单,写入Redis存储区。
第三方面,本发明实施例提供了一种网关设备,包括存储器和处理器;其中,存储器用于存储一条或多条计算机指令,一条或多条计算机指令被处理器执行,以实现上述游戏充值支付结果的通知方法。
本发明实施例带来了以下有益效果:
本发明实施例提供的一种游戏充值支付结果的通知方法、装置和网关设备,当接收到来自支付渠道侧的订单的支付结果合法时,将该支付结果保存为待通知订单并写入Redis存储区;再根据该待通知订单种的优先级参数,将支付结果通知至游戏侧;该方式中,通过设置Redis存储区,网关可以以异步的形式将支付渠道发送的支付结果通知至游戏侧,避免了采用同步方式发送通知时,订单量较大造成的网关拥堵,进而通知发送不到位的问题,提高了网关处理大量订单时的峰值处理能力,进而使游戏充值支付结果的通知方式更加可靠。
同时,对发送失败的待支付订单再次写入Redis存储区进行重发的过程,进一步提高了游戏充值支付结果的通知方式的容错性和可靠性。
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种游戏充值支付结果的通知方法的流程图;
图2为本发明实施例提供的另一种游戏充值支付结果的通知方法的流程图;
图3为本发明实施例提供的另一种游戏充值支付结果的通知方法的流程图;
图4为本发明实施例提供的一种游戏充值支付结果的通知装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到现有的游戏充值支付结果的通知方式可靠性较低的问题,本发明实施例提供了一种游戏充值支付结果的通知方法、装置和网关设备;该技术可以应用于游戏充值时,支付渠道侧向游戏侧发送支付结果通知的场景中;还可以应用于其他充值、支付场景下,支付渠道侧向需求侧发送支付结果通知的场景中。该技术可以采用相关的软件或硬件实现,下面通过实施例进行描述。
参见图1所示的一种游戏充值支付结果的通知方法的流程图;该方法应用于网关,网关与支付渠道侧和游戏侧分别连接,该方法包括:
步骤S102,接收来自支付渠道侧的订单的支付结果;
通常,当游戏侧通过网关向支付渠道支付订单时,该支付渠道通过网关向游戏侧发送该支付订单对应的支付结果,以使游戏侧授予相应的用户该订单对应的权限。
步骤S104,当支付结果合法时,将支付结果保存为待通知订单,写入Redis存储区;其中,待通知订单包括支付结果和支付结果的优先级参数;优先级参数包括支付结果的通知时间和/或通知频率;
当接收到支付结果后,网关通常需要判断该支付结果是否合法,例如,生成该支付结果的支付平台是否合法,该支付结果是否为支付成功等;当该支付结果对应的支付平台不合法时,说明该支付结果为虚假的信息,或者木马、病毒等;此时,可以丢弃该支付结果,不进行保存;当支付结果为支付失败时,需要通知支付渠道侧,通常没有必要通知游戏侧,因此,也不保存该支付结果;因此,只有当支付结果的支付平台合法,且支付结果为支付成功时,才对该支付结果进行保存。
步骤S106,根据优先级参数,将支付结果通知至游戏侧。
当游戏支付业务量较大时,Redis存储区可能会同时保存有多个待通知订单;为了使网关有序工作,避免同时处理大量订单导致的网关拥堵、故障,需要对支付结果设备对应的优先级参数;例如,紧急的支付结果,可以设置较为接近的通知时间和较高的通知频率;非紧急的支付结果,可以设置稍晚的通知时间和较低的通知频率。
上述优先级参数中,通知时间可以理解为向游戏侧发送该支付结果的时间,例如,秒级的时间戳;通知频率可以理解为当向游戏侧发送该支付结果失败后,以后再次向游戏侧发送该支付结果的时间间隔,例如,30秒。
本发明实施例提供的一种游戏充值支付结果的通知方法,当接收到来自支付渠道侧的订单的支付结果合法时,将该支付结果保存为待通知订单并写入Redis存储区;再根据该待通知订单种的优先级参数,将支付结果通知至游戏侧;该方式中,通过设置Redis存储区,网关可以以异步的形式将支付渠道发送的支付结果通知至游戏侧,避免了采用同步方式发送通知时,订单量较大造成的网关拥堵,进而通知发送不到位的问题,提高了网关处理大量订单时的峰值处理能力,进而使游戏充值支付结果的通知方式更加可靠。
参见图2所示的另一种游戏充值支付结果的通知方法的流程图;该方法应用于网关,网关与支付渠道侧和游戏侧分别连接;该方法在图1中所示的游戏充值支付结果的通知方法基础上实现,该方法包括如下步骤:
步骤S202,接收来自支付渠道侧的订单的支付结果;
步骤S204,从支付结果中提取支付结果的来源、支付状态和支付金额;其中,该来源包括生成支付结果的支付平台;该支付状态包括支付成功或支付失败;支付金额包括用户实际支付的金额;
上述支付平台可以包括各银行对应的网银、以及第三方支付平台等,例如,支付宝、微信支付等;各支付平台生成的支付结果,通常都带有该支付平台的验证标识,网关可以通过该验证标识,判断该支付结果的来源是否合法。
步骤S206,判断支付结果的来源是否合法;如果合法,执行步骤S208;如果不合法,结束;
步骤S208,判断支付结果的支付状态是否是支付成功;如果支付成功,执行步骤S210;如果支付失败,结束;
步骤S210,将订单的支付状态设置为已支付,将订单的支付金额设置为实际支付的金额;将支付结果保存为待通知订单,写入Redis存储区。其中,该待通知订单包括支付结果和支付结果的优先级参数;该优先级参数包括支付结果的通知时间和/或通知频率;
上述订单的支付状态和支付金额保存在MySQL数据库中,当支付成功后,则更新相应的MySQL数据库表中支付状态和支付金额相应的字段。
上述待通知订单写入Redis存储区时,需要按照设定的规范命名该待通知订单的键名和键值,以便于网关根据键名对订单进行搜索和识别。待通知订单的键命名规则可以为:{prefix}_{rate}_{consume_time},例如:list_0_1498960800;其中,{prefix}表示键名前缀,可自定义;{rate}表示通知频率,如0/30/60/300/900/1800/3600秒,0表示为马上处理,30表示为30秒后处理;{consume_time}表示通知时间,通过秒级别的时间戳表示,如1498960800。在Redis存储区中,每个待通知订单以json格式字符串存储,order属性表示待通知订单的订单号,rate属性表示通知频率,consume_time属性表示通知时间,例如:{"order":"201607031000001234","rate":"0","consume_time":"1498960800"}。
再如,假设当前的订单号为201607031000001234,当前时间为2017-07-02 10:00:00,转换为秒级别时间戳,即1498960800,由于当前的订单为首次写入队列进行通知支付结果,频率取为0。故队列名为list_0_1498960800,故队列元素值为:
{"order":"201607031000001234","rate":"0","consume_time":"1498960800"}。
步骤S212,根据优先级参数,将支付结果通知至游戏侧。
上述方式中,通过设置Redis存储区,并设置合理的键名和键值的命名规则,可以便于网关按照顺序将多个支付结果通知至游戏侧;网关可以以异步的形式将支付渠道发送的支付结果通知至游戏侧,避免了采用同步方式发送通知时,订单量较大造成的网关拥堵,进而通知发送不到位的问题,提高了网关处理大量订单时的峰值处理能力,进而使游戏充值支付结果的通知方式更加可靠。
参见图3所示的另一种游戏充值支付结果的通知方法的流程图;该方法应用于网关,网关与支付渠道侧和游戏侧分别连接;该方法在图1或图2中所示的游戏充值支付结果的通知方法基础上实现,该方法包括如下步骤:
步骤S302,接收来自支付渠道侧的订单的支付结果;
步骤S304,当支付结果合法时,将支付结果保存为待通知订单,写入Redis存储区;其中,该待通知订单包括支付结果和支付结果的优先级参数;该优先级参数包括支付结果的通知时间和/或通知频率;
步骤S306,初始化待通知订单的处理参数;其中,该处理参数包括休眠时间、同时处理待通知订单的最大数量和待通知订单中的通知频率。
具体地,上述步骤S306可以用于加载、定义网关的配置;通过设置同时处理待通知订单的最大数量,可以控制下述子进程的数量,进而控制网关的负载,提高网关的订单峰值处理能力;上述待通知订单中的通知频率,用于定义向游戏侧发送支付结果失败后,重新发送的间隔时间;上述休眠时间,用于定义网关内主进程的休眠时间,当Redis存储区内没有待通知订单时,主进程则进入休眠状态,通过合理定义休眠时间,可以降低主进程的无限循环给网关造成的压力。
上述步骤S306之后,网关内部还可以执行下述步骤:(1)“注册信号处理函数”步骤,负责定义不同信号类型所对用的处理函数,包括SIGHUP、SIGINT、SIGQUIT、SIGTERM、SIGABRT等信号,便于在接收到信号后做相应的处理,例如实现进程终止、进程重载、进程重启等功能。(2)“分发信号”步骤,负责中断当前程序的执行,将信号传递给对应的处理函数,该步骤位于循环最开始,目的是为了保障后续步骤的完整性而不被中断。若存在信号,程序则进入“执行信号处理函数”步骤,执行自定义的处理代码。
步骤S308,从Redis存储区中读取优先级参数满足设定条件的多个待通知订单;
具体地,上述步骤S308,可以通过下述方式实现:(1)根据优先级参数,为每个待通知订单设置优先级;(2)从Redis存储区中提取优先级满足设定阈值的多个待通知订单。
例如,根据优先级参数中的通知时间和通知频率,为每个待通知订单设置优先级;再根据设置的优先级为待通知订单进行排序,根据排序结果从Redis存储区中提取优先级满足设定阈值的多个待通知订单,例如,提取排位在前10位的待通知订单。
由于在Redis存储区中,每个待通知订单都设置有键值和键名,因此,可以搜索出Redis中当前需要通知支付结果的订单信息。基于前面定义的键名和键值规范,假设当前时间戳为1498960800,则可用“keys list_*_[0-1][0-4][0-9][0-8][0-9][0-6][0][0-8][0][0]”命令搜索出需要通知支付结果的队列名称,基于搜索出的队列名称,对队列依次出队,即可得到相应的订单信息。为提高运行效率,可结合使用lrange、ltrim等批处理命名,例如:“lrange list 0 9”命令取list队列的前10个元素,“ltrim list 10-1”命令删除list队列的前10个元素。在设置优先级时,通知时间越小的优先级越高,通知频率越小的优先级越高。
步骤S310,将多个待通知订单分配至处于空闲状态的子进程,以使子进程将所述待通知订单对应的所述支付结果发送至游戏侧;通常,每笔订单的支付结果通知由一个子进程完成。
例如,当前配置的同时处理待通知订单的最大数量为50,当前主进程已有30个子进程,处于繁忙状态的子进程个数为20,处于空闲状态的子进程个数为10;若Redis存储区中当前时间待通知的订单数量为5,则主进程将5笔订单分配至处于空闲状态的5个子进程;若Redis存储区中当前时间待通知的订单数量为35,则主进程将优先级最高的10笔订单分配给处于空闲状态的10个子进程,然后主进程创建20个子进程并将优先级次高的20笔订单分配给新创建的20个子进程,由于子进程个数已经达到上限,主进程不会继续创建子进程,剩余的5笔订单将在主进程的下一次循环处理。
每个子进程具体可以通过下述步骤实现:
步骤S312,子进程向游戏侧发送支付结果;
该步骤S312中,子进程基于HTTP协议实现构造请求参数、解析游戏返回结果的步骤;由于网络故障、游戏接口故障、游戏接口处理延时等原因都可能造成该步骤的通知失败,因此需要下述步骤进行监测是否发送成功,如果没有成功,则建立重发机制。
步骤S314,监测是否接收到游戏侧发送的支付结果对应的通知接收反馈信息;如果是,执行步骤S316;如果否,执行步骤S318;
步骤S316,将订单的通知状态设置为已通知;
上述订单的通知状态保存在MySQL数据库中,当支付结果发送成功后,则更新相应的MySQL数据库表中通知状态相应的字段。
步骤S318,将支付结果对应的待通知订单再次写入Redis存储区。
例如,当前的待通知订单的信息如下:{"order":"201607031000001234","rate":"0","consume_time":"1498960800"},当该待通知订单发送至游戏侧失败时,则待通知订单中的通知频率,例如为30;则更改该待通知订单的信息中的通知时间为1498960800+30=1498960830,即队列名为:list_30_1498960830,队列元素值为:{"order":"201607031000001234","rate":"30","consume_time":"1498960830"}。更改后,再次写入Redis存储区中。
上述方式中,待处理订单保存至Redis存储区后,根据订单的优先级参数提取多个待处理订单,再通过多个子进程以并发的形式进行处理;在处理的过程中,监测支付结果是否成功发送至游戏侧,如果发送失败,则根据通知频率修改订单的通知时间,再次写入Redis存储区,以使该支付订单再次发送至游戏侧,直至发送成功;这种以异步的形式将支付渠道发送的支付结果通知至游戏侧,避免了采用同步方式发送通知时,订单量较大造成的网关拥堵,进而通知发送不到位的问题,提高了网关处理大量订单时的峰值处理能力,进而使游戏充值支付结果的通知方式更加可靠。
同时,对发送失败的待支付订单再次写入Redis存储区进行重发的过程,进一步提高了游戏充值支付结果的通知方式的容错性和可靠性。
对应于上述方法实施例,参见图4所示的一种游戏充值支付结果的通知装置的结构示意图;该装置设置于网关,网关与支付渠道侧和游戏侧分别连接,该装置包括如下部分:
接收模块40,用于接收来自支付渠道侧的订单的支付结果;
写入模块41,用于当支付结果合法时,将支付结果保存为待通知订单,写入Redis存储区;其中,待通知订单包括支付结果和支付结果的优先级参数;优先级参数包括支付结果的通知时间和/或通知频率;
通知模块42,用于根据优先级参数,将支付结果通知至游戏侧。
本发明实施例提供的一种游戏充值支付结果的通知装置,当接收到来自支付渠道侧的订单的支付结果合法时,将该支付结果保存为待通知订单并写入Redis存储区;再根据该待通知订单种的优先级参数,将支付结果通知至游戏侧;该方式中,通过设置Redis存储区,网关可以以异步的形式将支付渠道发送的支付结果通知至游戏侧,避免了采用同步方式发送通知时,订单量较大造成的网关拥堵,进而通知发送不到位的问题,提高了网关处理大量订单时的峰值处理能力,进而使游戏充值支付结果的通知方式更加可靠。
进一步地,上述写入模块,还用于:从支付结果中提取支付结果的来源、支付状态和支付金额;其中,来源包括生成支付结果的支付平台;支付状态包括支付成功或支付失败;支付金额包括用户实际支付的金额;判断支付结果的来源是否合法;如果合法,判断支付结果的支付状态是否是支付成功;如果是支付成功,将订单的支付状态设置为已支付,将订单的支付金额设置为实际支付的金额;将支付结果保存为待通知订单,写入Redis存储区。
本发明实施例还提供了一种网关设备,包括存储器和处理器;其中,存储器用于存储一条或多条计算机指令,一条或多条计算机指令被处理器执行,以实现上述游戏充值支付结果的通知方法。
该网关设备可以采用服务器实现,通过web应用程序,软件系统运行于Linux服务器上,可采用PHP/JSP/Python等语言开发,并部署在应用服务器如Nginx/Apache/Tomcat。同时,系统应安装Redis服务端,并基于选取的开发语言实现Redis客户端。
本发明实施例提供了一种游戏充值支付结果的通知方法、装置和网关设备,基于Redis队列(相当于上述Redis存储区),实现异步化,具有如下优点:解耦接收支付渠道支付结果和通知游戏支付结果两个过程;提高峰值处理能力,避免订单量大时,因机器超出负载而导致服务中断;提高可恢复能力,加入队列中的消息仍然可以在系统恢复后被正常处理。同时,基于Redis队列实现自动重试机制,提升系统的容错性,相对于传统的基于关系型数据库的方法而言,具有更高的效率。
上述网关设备包括:
(1)Redis,一个key-value型的存储系统,数据缓存在内存中。同时,Redis也支持周期性的把更新的数据写入磁盘,因此Redis可提高系统可恢复能力,而纯内存性的Memcache不能实现。本发明利用Redis的list数据结构实现消息队列。
(2)支付结果接收接口程序(可以用于实现上述接收来自支付渠道侧的订单的支付结果,当所述支付结果合法时,将所述支付结果保存为待通知订单,写入Redis存储区的步骤),由支付渠道基于HTTP协议主动请求,作为“生产者-消费者”模型中的生产者,负责校验请求合法性和解析请求参数。若支付成功则将订单写入Redis队列,供消费者使用,否则不写入,并返回处理结果给支付渠道。
(3)通知游戏支付结果守护进程(可以用于实现上述根据所述优先级参数,将所述支付结果通知至游戏侧的步骤),即持续在后台运行的cli程序,作为“生产者-消费者”模型中的生产者或消费者,负责读取Redis队列。若存在待通知的订单则请求对应游戏的充值接口程序,若通知游戏支付各个失败,订单重新写入队列,待后续进行重试通知。
本发明实施例所提供的一种游戏充值支付结果的通知方法、装置和网关设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种游戏充值支付结果的通知方法,其特征在于,所述方法应用于网关,所述网关与支付渠道侧和游戏侧分别连接,所述方法包括:
接收来自支付渠道侧的订单的支付结果;
当所述支付结果合法时,将所述支付结果保存为待通知订单,写入Redis存储区;其中,所述待通知订单包括所述支付结果和所述支付结果的优先级参数;所述优先级参数包括所述支付结果的通知时间和/或通知频率;
根据所述优先级参数,将所述支付结果通知至游戏侧。
2.根据权利要求1所述的方法,其特征在于,所述当所述支付结果合法时,将所述支付结果保存为待通知订单,写入Redis存储区的步骤,包括:
从所述支付结果中提取所述支付结果的来源、支付状态和支付金额;其中,所述来源包括生成所述支付结果的支付平台;所述支付状态包括支付成功或支付失败;所述支付金额包括用户实际支付的金额;
判断所述支付结果的来源是否合法;
如果合法,判断所述支付结果的支付状态是否是支付成功;
如果是支付成功,将所述订单的支付状态设置为已支付,将所述订单的支付金额设置为所述实际支付的金额;将所述支付结果保存为待通知订单,写入Redis存储区。
3.根据权利要求1所述的方法,其特征在于,所述根据所述优先级参数,将所述支付结果通知至游戏侧的步骤,包括:
从所述Redis存储区中读取所述优先级参数满足设定条件的多个所述待通知订单;
将多个所述待通知订单分配至处于空闲状态的子进程,以使所述子进程将所述待通知订单对应的所述支付结果发送至游戏侧。
4.根据权利要求3所述的方法,其特征在于,所述子进程将所述待通知订单对应的所述支付结果发送至游戏侧的步骤,包括:
所述子进程向所述游戏侧发送所述支付结果;
监测是否接收到所述游戏侧发送的所述支付结果对应的通知接收反馈信息;
如果是,将所述订单的通知状态设置为已通知;
如果否,将所述支付结果对应的所述待通知订单再次写入所述Redis存储区。
5.根据权利要求3所述的方法,其特征在于,所述子进程将所述待通知订单对应的所述支付结果发送至游戏侧的步骤,还包括:
多个所述子进程之间以并发的方式,执行权利要求4所述的方法。
6.根据权利要求3所述的方法,其特征在于,所述从所述Redis存储区中读取所述优先级参数满足设定条件的多个所述待通知订单的步骤,包括:
根据所述优先级参数,为每个所述待通知订单设置优先级;
从所述Redis存储区中提取所述优先级满足设定阈值的多个所述待通知订单。
7.根据权利要求3所述的方法,其特征在于,所述从所述Redis存储区中读取所述优先级参数满足设定条件的多个所述待通知订单的步骤之前,所述方法还包括:
初始化所述待通知订单的处理参数;其中,所述处理参数包括休眠时间、同时处理待通知订单的最大数量和所述待通知订单中的通知频率。
8.一种游戏充值支付结果的通知装置,其特征在于,所述装置设置于网关,所述网关与支付渠道侧和游戏侧分别连接,所述装置包括:
接收模块,用于接收来自支付渠道侧的订单的支付结果;
写入模块,用于当所述支付结果合法时,将所述支付结果保存为待通知订单,写入Redis存储区;其中,所述待通知订单包括所述支付结果和所述支付结果的优先级参数;所述优先级参数包括所述支付结果的通知时间和/或通知频率;
通知模块,用于根据所述优先级参数,将所述支付结果通知至游戏侧。
9.根据权利要求8所述的装置,其特征在于,所述写入模块,还用于:
从所述支付结果中提取所述支付结果的来源、支付状态和支付金额;其中,所述来源包括生成所述支付结果的支付平台;所述支付状态包括支付成功或支付失败;所述支付金额包括用户实际支付的金额;
判断所述支付结果的来源是否合法;
如果合法,判断所述支付结果的支付状态是否是支付成功;
如果是支付成功,将所述订单的支付状态设置为已支付,将所述订单的支付金额设置为所述实际支付的金额;将所述支付结果保存为待通知订单,写入Redis存储区。
10.一种网关设备,其特征在于,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行,以实现权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710941199.1A CN107657434A (zh) | 2017-10-10 | 2017-10-10 | 游戏充值支付结果的通知方法、装置和网关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710941199.1A CN107657434A (zh) | 2017-10-10 | 2017-10-10 | 游戏充值支付结果的通知方法、装置和网关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107657434A true CN107657434A (zh) | 2018-02-02 |
Family
ID=61117688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710941199.1A Pending CN107657434A (zh) | 2017-10-10 | 2017-10-10 | 游戏充值支付结果的通知方法、装置和网关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107657434A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491227A (zh) * | 2018-03-09 | 2018-09-04 | 深圳市富途网络科技有限公司 | 一种基于lua和redis的安全配置系统及方法 |
CN109074560A (zh) * | 2018-07-10 | 2018-12-21 | 威富通科技有限公司 | 支付结果信息处理方法及终端设备 |
CN111447979A (zh) * | 2018-02-27 | 2020-07-24 | 多玩国株式会社 | 游戏运行装置及游戏程序 |
CN113114725A (zh) * | 2021-03-19 | 2021-07-13 | 中新网络信息安全股份有限公司 | 一种基于http协议多节点数据交互系统及其实现方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103401277A (zh) * | 2013-07-11 | 2013-11-20 | 广州广电运通金融电子股份有限公司 | 一种智能电源及利用该智能电源实现移动支付的方法 |
CN103516585A (zh) * | 2012-06-29 | 2014-01-15 | 北京奇虎科技有限公司 | 一种实现消息优先级分发的方法及系统 |
CN105868033A (zh) * | 2016-04-06 | 2016-08-17 | 江苏物联网研究发展中心 | 基于Redis实现优先级消息队列的方法及系统 |
US20160267447A1 (en) * | 2015-03-11 | 2016-09-15 | Facebook, Inc. | Facilitating sending, receiving, and updating of payments using message and payment queues |
CN106204000A (zh) * | 2016-07-05 | 2016-12-07 | 康存乐付保数据科技(上海)有限公司 | 一种服务消费支付信息处理方法及系统 |
-
2017
- 2017-10-10 CN CN201710941199.1A patent/CN107657434A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103516585A (zh) * | 2012-06-29 | 2014-01-15 | 北京奇虎科技有限公司 | 一种实现消息优先级分发的方法及系统 |
CN103401277A (zh) * | 2013-07-11 | 2013-11-20 | 广州广电运通金融电子股份有限公司 | 一种智能电源及利用该智能电源实现移动支付的方法 |
US20160267447A1 (en) * | 2015-03-11 | 2016-09-15 | Facebook, Inc. | Facilitating sending, receiving, and updating of payments using message and payment queues |
CN105868033A (zh) * | 2016-04-06 | 2016-08-17 | 江苏物联网研究发展中心 | 基于Redis实现优先级消息队列的方法及系统 |
CN106204000A (zh) * | 2016-07-05 | 2016-12-07 | 康存乐付保数据科技(上海)有限公司 | 一种服务消费支付信息处理方法及系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111447979A (zh) * | 2018-02-27 | 2020-07-24 | 多玩国株式会社 | 游戏运行装置及游戏程序 |
CN111447979B (zh) * | 2018-02-27 | 2023-04-04 | 多玩国株式会社 | 游戏运行装置及终端服务器 |
CN108491227A (zh) * | 2018-03-09 | 2018-09-04 | 深圳市富途网络科技有限公司 | 一种基于lua和redis的安全配置系统及方法 |
CN109074560A (zh) * | 2018-07-10 | 2018-12-21 | 威富通科技有限公司 | 支付结果信息处理方法及终端设备 |
CN113114725A (zh) * | 2021-03-19 | 2021-07-13 | 中新网络信息安全股份有限公司 | 一种基于http协议多节点数据交互系统及其实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107657434A (zh) | 游戏充值支付结果的通知方法、装置和网关设备 | |
CN107391268A (zh) | 服务请求处理方法及装置 | |
CN110795203B (zh) | 资源调度方法、装置、系统和计算设备 | |
CN108563518A (zh) | 主从机通信方法、装置、终端设备及存储介质 | |
CN110247942B (zh) | 一种数据发送方法、装置和可读介质 | |
CN107832143B (zh) | 一种物理机资源的处理方法和装置 | |
CN108228363A (zh) | 一种消息发送方法及装置 | |
CN110837420B (zh) | 资源调度方法、装置、终端及存储介质 | |
CN110580195B (zh) | 一种基于内存热插拔的内存分配方法和装置 | |
CN106791928A (zh) | 一种自适应的高性能视频转码系统和方法 | |
CN109766508A (zh) | 信息审核方法、装置及电子设备 | |
CN114357495B (zh) | 基于区块链的预言机链下聚合方法、装置、设备和介质 | |
CN107368324A (zh) | 一种组件升级方法、装置和系统 | |
CN107609851A (zh) | 虚拟币充值方法、装置和游戏平台服务器 | |
CN113742174B (zh) | 云手机应用监控方法、装置、电子设备和存储介质 | |
CN113326150A (zh) | 一种联机小批量消息处理方法和装置 | |
US11307974B2 (en) | Horizontally scalable distributed system for automated firmware testing and method thereof | |
CN113703967A (zh) | 数据处理方法、装置、存储介质和电子装置 | |
CN109656708B (zh) | Android的动画播放限制方法、存储介质、电子设备及系统 | |
CN108156514B (zh) | 媒体文件的播放方法、装置及存储介质 | |
CN114328549B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN117573620B (zh) | 一种大文件拆分并发读取方法和系统 | |
CN108259393A (zh) | 一种流数据处理中乱序纠正方法及系统 | |
CN117493022B (zh) | 处理器资源调度方法、装置及系统 | |
CN113392011A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180202 |