范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

如何防止订单重复支付?

  想必大家对在线支付都不陌生,今天和大家聊聊如何防止订单重复支付。看看订单支付流程
  我们来看看,电商订单支付的简要流程:
  从下单/计算开始:下单/结算:这一步虽然不是直接的支付起点,但是支付相关的金额等等信息都来自结算,此时订单的状态是未支付申请支付:用户选择申请支付,客户端调用支付服务,此时在系统内产生一笔支付流水,这笔流水的状态是未支付发起支付:支付服务调用三方支付,通常这种钱包类的支付,在发起支付这一步,会响应一些支付的链接,客户端会对链接进行对应的处理。钱包支付:用户进行支付,通常是通过对应的钱包进行的,大家可以回忆一下自己在购物中,支付的过程,不同的端,对钱包支付的处理是不太一样的:PC端:PC端,通常是打开收银台,展示一个二维码,通过钱包扫码支付,下面是京东的微信支付扫码页
  WAP端:手机的网页站,WAP端的支付一般是直接拉起对应的钱包,如果拉起钱包失败,就跳转界面
  APP端: 在国内,购物大部分都是在APP端,产品经理会想法设法把用户带到APP,为什么我的示例图都用京东,不用淘宝呢?因为我拿UC打开淘宝,会直接跳转APP。APP端的钱包支付,我们应该都非常熟悉,一般是拉起钱包,支付。
  支付回调:用户完成支付后,三方支付平台,会回调商户,通知支付结果。同步订单状态:支付服务在确认支付完成后,会向订单服务同步支付的结果,订单服务变更订单的状态,由未支付-》待发货,客户端通过轮询、长连接,或者服务端主动推送的方式,在界面上变更订单状态。
  我们再从支付流水的角度看一下支付状态的变化:
  从未支付,到有支付结果的终态,中间还有一个中间状态支付中用户通过打开钱包--》完成支付--》支付回调,这段时间的支付流水就处于支付中
  为什么要花这么多篇幅来讲支付的业务流程、交互过程呢?因为我认为,防止订单的重复支付,不止是技术上的问题,也是业务和产品上的问题。为什么订单会重复支付未防重导致的重复支付
  我们可以看到PC端支付,是扫描二维码,这些二维码,就是对应相应的支付流水,假如用户重复点击支付,如果不做防重的的话,会生成两笔支付流水,也就是两个不同的二维码,要是用户分别扫了两个不同的支付码,那么毫无疑问,就会产生重复支付。掉单导致的重复支付
  "我明明付款了,为什么我的订单还没支付呢?"
  这就是所谓的"掉单":外部掉单:三方支付的支付状态没有同步或者没有及时同步到商城,这叫外部掉单内部掉单:支付服务的状态没有同步到订单,或者客户端没有及时获取到订单状态,这叫内部掉单。
  用户一看,自己付了款,结果商城里订单还未付款,但是又特别想要,可能就会再下一单,这样就重复支付了。多渠道导致的重复支付
  我们国内支付的体验还是非常快捷的,大家可能没有感觉,如果了解过海外支付的可能了解,很多支付的渠道,消耗的时间非常长。
  比如用户保罗选择了一种支付方式Boleto,结果支付的网点离保罗他们村太远了,保罗又选择了Paypal支付,保罗去赶集的时候,又顺手去网点把Boleto的这一笔支付了,结果就重复支付了。
  这种情况大家可能很少遇到,我们可以用美团下一个单,先打开微信支付,不要支付啊,接着回到美团,打开支付宝,用支付宝支付完成后,用微信接着支付,大家猜猜,两笔支付是不是都能成功?答案是可以。
  如何防止订单重复支付加锁
  不管是3.申请支付、还是5.支付回调,都应该以订单维度加锁,防止并发下的重复操作。
  加锁,毫无疑问,也是分布式锁,通常我们会选择Redis分布式锁。
  缓存结果
  申请支付成功,支付回调成功,都应该缓存结果。
  再申请支付,收到成功回调的时候,都应该先去检查支付的状态。
  支付中流水取消
  假如说,用户重复支付了,再次申请支付的时候,如果已经申请支付成功了,那么这笔支付肯定是要拒绝的。
  但是,要是已经存在的这笔流水还在支付中呢?——我们不确定它是成功还是失败,肯定是不能拒绝支付的,因为可能用户支付失败了,但是状态还没同步,这样肯定是不行的。
  所以,我们可以取消掉正在支付中的流水,再进行支付。
  已支付流水退款
  现在又有新的问题了,假如发起支付的时候,有流水正在支付中,如果第三方支付平台不支持取消支付,或者用户新的支付是通过不同的渠道,我们希望尽可能提高用户的支付成功率,怎么办呢?
  我们可以在发起支付的时候,订单还在支付中的情况下,允许用户发起多笔支付,在支付回调的时候,检查用户是否已经有成功流水,对后来的流水进行退款处理。
  当然,退款是个很危险的操作,毕竟钱退了,可就很难追回来,一定要做好风险的控制。主动轮询&重试防止掉单主动轮询防止外部掉单
  如果因为故障没有收到回调,或者没有及时收到回调,就可能会发生所谓的外部掉单。
  防止外部掉单的关键,就在于,不能傻傻地只等三方的回调通知,而要主动去查询,用户发起支付的3s之后,就可以发起轮询了,直到拿到支付流水的最终状态,主动轮询,一般可以这么实现:
  定时任务轮询使用定时任务,扫描表中支付中的流水,主动查询支付的状态,定时任务的实现方式有很多,线程池、调度框架、分布式调度框架等等。定时任务轮询的缺点有两个:对数据库有一些压力,观察监控,会发现定时任务扫表的时候,有时候会造成数据库的一些"峰刺"不便调整频率,实际上,用户发起一笔支付之后,一般都会在10s-1min中完成支付,越往后,用户完成支付,所以轮询梯度进行,会更合理一些,轮询的间隔可以设置成类似这种:3s,10s,30s,3min……延时消息轮询另外一种方式就是使用延时消息,用户发起支付之后,发送一个延时消息,消费到延时消息之后,查询流水支付状态,没有拿到最终状态,就再发一个延时消息。延时消息的好处是对数据库的压力没有那么大,轮询的梯度也可以进行控制,缺点是实现起来复杂一些,而且要维护消息队列。同步+异步防止内部掉单
  支付服务在收到异步通知回调、或者主动轮询到流水的最终状态后,要通知订单服务支付流水的变化,订单服务同步更新订单的状态,这个过程要尽可能保证通知成功,可以采用同步+异步的方式。同步调用:支付服务调用订单服务的通知接口,有可能会因为网络等等的原因失败,也可以重试,但是根据经验,如果网络出现一些波动,重试很可能也会失败。异步通知:支付服务还应该发送一个支付成功的消息,订单服务可以利用消息队列的重试机制,来尽可能保证支付状态的同步。
  这里还有一个问题,客户端如何同步这个状态?因为可能服务端更新了订单状态,但是客户端的界面上还是未支付,得用户主动刷新一下,才能拿到最新的状态,这样明显是不太合适的。
  服务端、客户端的状态同步,无非就拉和推:拉:很简单,就是客户端在用户跳回订单状态页的时候,轮询一会,如果用户完成支付,通常很短时间就能获取到状态的变更,当然这种方式对客户端的性能会有一些影响,而且很出现状态同步"漏网之鱼"的情况。推:推的实现有些麻烦,Web通常是用Websocket,对APP端的推送,一般采用第三方的推送平台。客户端支付尽可能不外跳
  不管从产品的角度,还是技术的角度,客户端发起支付这一步,其实应该尽可能地不要外跳,PC端使用支付服务生成的支付码,而不是跳转;移动端网页、APP在应用内展示支付页,当然这个是由第三方支付平台决定的。
  不知道大家留意到了没有,现在的支付宝,已经做到了不用拉起钱包,在应用内就可以完成支付,这个对于商家的意义还是比较大的,对用户体验、支付成功率,都有正面的作用,相信以国内的内卷程度,其它支付供应商,一定会"跟进"的。
  好了,关于如何防止重复支付,就讲到这里。

杜锋明确将球交给王哲林,胡明轩这球竟然死活不传越打越差北京时间7月14日,中国男篮亚洲杯第二个对手是巴林队,而之前我们面对这个对手场均能赢30分以上,所以这次中国男篮是很大机会获得一场大胜。不过,来到比赛中,除了第一节和第二节中段取得每日GIF动图我要不要给他们留一点面子呢我要不要给他们留一点面子呢虽然我不会走路,但是我会爬呀看来跟上一届的五强选手做到一起啦这胶水好厉害呀大黄大哥交代的,让我带你进去姑娘你是不是不知道我在这看着你呢,这光天化日之下你也吕健吉别让硕班成洗学历大门近日因林智坚的论文抄袭事件,延伸出台湾硕士教育的诸多现象可谓是千奇百怪,台教育部门若不能好好检视问题,则台湾的硕士可能不只是一个洗学历的旋转门,更是一道为一些特定人士打造订做的方便佛教八大菩萨观世音菩萨观世音菩萨是佛教中慈悲和智慧的象征,无论在大乘佛教还是在民间信仰,都具有极重要的地位,以观世音菩萨为主导的大慈悲精神,被视为大乘佛教的根本,也是西方三圣中的一尊菩萨,是继牢记习主席期望重托在部队大熔炉中全面锻炼靠奋斗成长进步原标题靠奋斗成长进步(主题)牢记习主席期望重托在部队大熔炉中全面锻炼(副题)樊伟伟邓瞻强军兴军的使命要靠奋斗来实现,人生理想的风帆要靠奋斗来扬起。前不久,习主席给陆军步兵学院202打爆榜眼准状元!灰熊找到了新一代兰多夫?前几天榜眼霍姆格伦的NBA首秀惊艳到了许多人,第一场比赛的23分7篮板6盖帽的亮眼数据直接让他在新赛季获得最佳新秀的赔率榜升至第一。但他在第二场的表现可谓是令所有关注他的球迷失望了湖人惨遭截胡,快船捡漏欧文!篮网阻击勇士,伦纳德唯恐天下不乱现在的欧文,基本算是一个球队的负资产,篮网想要进行不亏本的交易,唯独可以与湖人进行交易。所以,我们可以看到,现在的湖人呈现出一种高枕无忧的状态,认为他们没有其他的竞争对手,交易也因一口气追了20集,越看越入戏,真是一部真实催泪剧回顾今年的影视行业,虽然是能让观众有看不断且看不赢的诸多影视作品,但要讲能够留在观众记忆里的应该也并没有几部。数一的想必只有那一部描绘了三代人故事的人世间了吧,因为只有这部剧的温度小八卦,鹿晗迪丽热巴,郑恺苗苗,杨幂袁冰妍猪头妹妹迪丽热巴鹿晗恋情?娱爷现在迪丽热巴和鹿晗谁也不愿意和谁捆绑,毕竟两个人中一个已经公开恋情,一个事业蒸蒸日上,所以传出恋情消息后,两边团队很快都出来处理了。小溪袁冰妍讨好杨幂逸仙电商的关键四个月,黄锦峰的二次创业曾经走出困境的原因,也是今日艰难的原因。文丨张钦编辑丨黄俊杰5月24日,逸仙电商发布一季度财报,显示账面上有超过31亿元人民币现金和短期投资。但它的市值只剩不到17亿元。股价代表资中国谍战4关东军间谍的反间计东北抗战期间,关东军用叛徒剿杀抗日队伍的事情,大家一定多有耳闻。用间谍削弱抗日队伍的事情有吗?一样有的。日本政府关东军,为了长期霸占东北,各种手段无所不用,谍战破坏抗日组织,就是一
神坛跌落!国美被爆停发员工工资,变相逼员工离职最近一条消息,在网上引起了轩然大波,登上热搜第一。由黄光裕创立的国美帝国,如今已经是风雨飘摇,昔日的家电零售巨头跌落神坛,现在又传出暂停员工薪酬的消息,让人唏嘘不已。被爆停发工资让迪凯机电氦气短缺的困境还会一直持续,回收再利用势在必行从去年开始的全球氦气短缺今天仍在继续,并可能持续到明年,并以不同的方式扰乱各种依赖氦气的行业,从预测天气到制造半导体和检测船舶中的气体泄漏。自2006年以来,这将是世界第四次缺氦。大动作!面板之王京东方21亿元入主华灿光电,打造MLED全产业链华灿光电(300323)因筹划涉及控制权更变的重大事项而停牌一周后,如今谜底揭晓,公司将迎来面板之王京东方A(000725)(下称京东方)的入主。11月6日晚间,华灿光电披露一份定OpenstackZedKeystone部署实现操作系统UbuntuServerMini22。04本次部署为带有自签SSL及Nginx反向代理的实现机制一配置NTP1)使用系统自带的systemdtimesyncd服务roots理想ONE路途中又起火,这次还是易燃物品引起?搭载增程式混动系统的理想ONE,算不上纯粹意义上的纯电动汽车。不过,与纯电动汽车的自燃焦虑相比,理想ONE似乎并不输它们。最近有网友上传了一段理想ONE起火的视频,据了解11月5日15万级就拥有620km续航,外观个性空间宽敞,值得买吗?15万级就拥有620km续航,外观个性空间宽敞的合创Z03值得买吗?新能源热潮超速席卷而来,与早年SUV风靡时一致,市场上依旧是紧凑型SUV最先火热,其中自然是年轻购车主体的新的用年少成名,30岁成为百万富翁,可他的这段创业心酸路你知道吗?谈起雷军先生,不少人都能对他的故事说出一二,他有三最最受欢迎的最刺激的最珍贵的最受欢迎的。年轻出名,30岁成为百万富翁,实现人生价值,却经历了大起大落。他是很多人经常提起的一个例子二十年稳健成长,洽洽食品聚焦瓜子坚果主业,渠道扩张稳健成长(报告出品方分析师开源证券张宇光)1瓜子坚果业务双发展,业绩稳健增长1。1坚果炒货领军企业,二十年稳健成长洽洽食品股份有限公司成立于2001年,是一家以坚果炒货为主要产品的休闲食品涉及400万人!保险业推动这项改革,利益向一线倾斜!探索佣金发放长期化涉及400多万保险代理人的营销制度将进一步完善。近日,银保监会人身险部就进一步推动完善人身保险行业个人营销体制,向行业征求意见,各寿险公司和保险业协会将于11月16日前反馈意见。截电池技术赶超宁王?众泰否认刚刚摘帽的众泰又被扣上新帽子。11月7日晚,众泰汽车发布公告称,公司近日关注到相关媒体在网络上发布的众泰内部人士不搞山寨了,电池技术比宁德时代先进等报道,对相关信息否认三连。针对报财经聚焦双11双11购物车里的消费新变化一年一度的双11购物节正在火热进行中。作为观察中国消费的一扇重要窗口,今年双11,购物车里呈现哪些消费新风?国货国潮出海,全球好物上新今年天猫双11,我们备货量比去年多了3倍,仓库