[发明专利]基于分布式订单系统的订单支付控重方法及装置在审
申请号: | 202110294091.4 | 申请日: | 2021-03-19 |
公开(公告)号: | CN112766956A | 公开(公告)日: | 2021-05-07 |
发明(设计)人: | 廖宸;毛淑平;郭润文;郭鑫 | 申请(专利权)人: | 中国工商银行股份有限公司 |
主分类号: | G06Q20/32 | 分类号: | G06Q20/32;G06Q30/06 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 任默闻;王涛 |
地址: | 100140 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 分布式 订单 系统 支付 方法 装置 | ||
本发明可用于金融领域或其他领域,本发明提供了一种基于分布式订单系统的订单支付控重方法及装置,基于分布式订单系统的订单支付控重方法包括:响应于与用户的订单支付请求,在订单集群中标记订单支付状态为待支付;判断用户支付是否成功;若是,判断用户的支付行为是否唯一;若是,在所述订单集群中更新所述订单支付状态为已支付,以完成订单支付。本发明通过数据库乐观锁实现在分布式场景下订单控重,通过订单集群一次带条件的状态更新实现订单不重复支付。在不引入分布式锁的情况下,降低系统部署复杂度,减少下节点间服务交互,降低了开发复杂度,提高系统处理效率。
技术领域
本发明属于大数据技术领域,具体涉及一种基于分布式订单系统的订单支付控重方法及装置。
背景技术
随着移动支付的广泛普及,特别是在零售支付场景中,因为交易量大,交易处理时效要求较高,支付系统一般会采用分布式技术来实现。具体地:根据微服务的架构,订单支付系统中一般分为商户订单集群,商户所属集群、付款方订单集群和个人账户集群等多个独立集群,其中商户订单集群负责商户方的订单生命周期管理,付款方订单集群负责付款方订单管理,为了支持收单商户和付款用户归属不同机构,两个订单系统分属不同集群,商户所属集群和个人账户集群分别负责商户和用户的资金收付。完成一笔订单的支付,需在两个订单系统下单,然后扣减个人用户的账户资金,增加商户账号资金。因交易过程中涉及多个集群,交易流程较长,系统在提高处理效率同时需控制交易重复发起,并保证交易一致性。
这里以付款方账户和收单机构不是同一家机构情况下用户主扫商户收款码为例,用户使用支付工具主动扫商户动态收款码。付款方所在系统收到用户发起的支付请求后先查询收款动态码的信息,包括收款方账户信息、机构信息以及订单信息等,获取这些信息后在付款方所在系统下单并提示用户输入金额,如果金额超过免密支付限额,则还需输入支付密码,然后扣减用户资金,并通知收款方机构入账。在这个过程中,对于同一笔订单需要满足以下控制机制。
1、一笔订单有且仅有一次成功支付,假设有人重复扫码,或多人扫相同订单收款码只能有一个人支付成功。
2、用户在支付失败的情况下,可以重新发起支付。
对于上述要求,系统处理流程如下,
1、个人账户集群查询商户订单信息后首先在付款方订单集群登记一笔付款订单,订单状态待支付。
2、用户输入金额后,系统在个人账户集群登记一笔付款指令,状态为支付中
3、个人账户集群调用付款方订单集群服务更新订单状态为支付中。
4、系统判断是否需要用户输支付密码,如果需要则提示用户输入,否则继续。
5、个人账户集群匹配支付密码成功并扣减用户资金,更新支付指令状态已扣账。
6、个人账户集群调用付款方订单集群服务更新订单状态为支付成功。
7、个人账户集群更新支付指令状态为支付成功,并通知商户入账。
以上流程涉及到付款方集群和收单集群3次远程调用,如果要控重需要引入分布式锁,比如redis或zookeeper,但这种情况会大大增加系统的复杂度。
发明内容
需要说明的是,本公开基于分布式订单系统的订单支付控重方法及装置可用于金融领域,也可用于除金融领域之外的任意领域,本发明对此不做限定
针对现有技术中的问题,本发明通过数据库乐观锁实现在分布式场景下订单控重,通过订单集群一次带条件的状态更新实现订单不重复支付。在不引入分布式锁的情况下,降低系统部署复杂度,减少下节点间服务交互,降低了开发复杂度,提高系统处理效率。
为解决上述技术问题,本发明提供以下技术方案:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国工商银行股份有限公司,未经中国工商银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110294091.4/2.html,转载请声明来源钻瓜专利网。