如何避免订单重复支付

1,问:假设有这么一种情况:

订单已下单成功并且正处于支付页面,用户调起支付网关进行支付。支付成功了一次,但是由于某种情况导致未接收到银行返回的【支付成功】等信号,系统此时还是认为未支付成功。用户此时又支付了一次并且成功了。

问题:

如果用户出现了2次支付并且都成功了,后台逻辑退款这一块如何设计?
是否可以避免这种情况的发生?如果可以怎么去避免呢。
2,以下由网友回答,仅作参考:

参考1)

A.后台设计逻辑:

1.参与的主体:

    电商系统

    网银或者第三方支付平台

    电商用的结算平台(例如商户支付宝,商户翼支付等)

2.设计的主要流程:

    电商系统调起网关支付,订单跳转到网银或者第三方支付平台中进行实际支付,这时订单中包含的信息是由电商用的结算平台先生成的一个支付订单信息(这个支付信息包含与电商系统与网银或者第三方支付平台的关联);用户在网银或者第三方支付平台中进行实际支付(这个支付交互是网银或者第三方支付平台与结算平台的交互),成功之后才是结算平台反馈支付信息给电商系统。

   下列图中
            1是用户调起网关支付,订单跳转到网银或者第三方支付平台中进行实际支付。
            2是用户支付成功后,订单反馈至电商系统。
image.png

现在出现重复付款的问题就是出现在中的网银或者第三方支付平台到电商用的结算平台出现了延迟的情况,导致在电商系统中的订单一直处于未付款状态,部分用户以为未支付就最终产生了重复付款。

B.如何避免

针对这个问题,思考了各种场景以及情况,这种模式是无法避免重复付款的(必须得看结算平台的处理效率-一般情况下还是比较好的,还是少有延迟的情况)。只能后台检测重复付款的订单,异常走退款流程。

除非系统本身具有支付平台的功能。

C.延伸问题,如何处理因为支付成功后因延迟回调而订单被取消

这个问题的出现背景也是因为第三方结算平台延迟反馈而造成用户错以为没有支付而取消订单或者是系统到时时自动取消订单

解决办法:

       建立异常处理机制,机制如下:

    结算平台延迟返回成功的支付信息给电商系统时,如果判断出此订单已经取消。则进入异常处理机制,更改订单为已收款状态,并再次扣减订单中库存以及各种优惠(例如:价保,返利,促销费,优惠等等)的回退。当然再此扣减的时候需要先判断相关产品的库存以及用户的各种优惠是否满足订单的扣减,不满足则不允许转化。

这里是应该先判断再次扣减的库存以及各种优惠,再修改订单状态,步骤以及相关的支付信息为成功。

参考2)

第三方返回的状态实际是3种,返回成功,返回失败和无返回。当无返回时,如果处理成返回失败,就会让用户支付两笔,这本身是一种最糟糕的选择。沿着这个最糟糕的选择去做退款逻辑,是错上加错。

我们应该引入一个单独的支付层,它可以做两个事情:1.delay第2次支付请求 2.通过另一组接口查询第1次支付状态。 在最无能为力的情况下,提示用户异常并在24小时内对账后处理解决。当然用户如果确实急的不行,另下一单即可。

说回真实情况,支付宝等第三方成熟的支付平台,自然会根据重复的购物订单号来做好预防

参考3)

问题:

如果用户出现了2次支付并且都成功了,后台逻辑退款这一块如何设计?
这块其实要通过账务的对账长款能区分出来,理论上来讲第二天支付通道返回的交易流水文件每一笔跟你的订单交易记录是一一对应的。一旦有一笔订单支付N次的话,则可能出现一个现象就是支付通道返回的交易流水会多出(N-1)笔,那这些就是长款,财务确认无误后可以手动发起退款。

是否可以避免这种情况的发生?如果可以怎么去避免呢。
理论上每一笔订单发起支付的时候都会有统一下单的过程,会把订单单号作为外部交易流水号加上其他信息打包去支付方生成支付订单,如果一笔订单在支付方已经支付的话,用户再次打开这个页面应该是会被提示订单已支付。除非每次点击“支付”生成的支付通道流水号都不是唯一,则可能出现。

同时,建议你在后端做一些未支付订单主动查询的动作,例如:最近15分钟生成的未支付订单后端主动查询一下支付状态”等等,可以优化这块的困扰。

参考4)

1、如果用户出现了两次支付并且都成功了......

看你站在谁的角度去解决问题了,一般后台都是有应付、实付、立减、优惠等字段的。1)等着用户来找你(不找你的你帮公司赚了),2)财务对账发现问题,3)你主动为用户解决。至于回答中还有什么根据流水来的,首先请求流水是控制不了得;返回成功流水,那可能是你们业务暂时不涉及到组合支付,分次支付...

2、怎么解决?

前端:1)交互方式改变,有的是新开页面,例如PC,如果同时开了两个第三方页面,那只能让其继续支付了(在没收到消息前调起SDK也是一样无法避免),有的是原页面跳转,这种也一定程度上避免了用户打开很多页面自己搞乱掉了再去发起支付。2)在选择支付渠道,发生【去支付】动作时也可以做一个接口判断,有没全部付完款?在这之前还有订单及业务资源等一系列判断,与此题无关。

系统:支付页设置定时器,维金系统中查询功能也蛮好的,支付请求开始后,半小时之内去跟踪状态,查询频率由高到低。有开始你就要去考虑终止,涉及到资源问题要依据自己公司的情况,想法跟落地从来都是矛盾的。

最后,第三方信息返回延迟,失败率都没有想象中的那么不友好。场景上,例如移动端支付宝微信会有个支付后的等待动作,不会立马再让你去发起【去支付】。我的经历一般重复支付这样的问题都是内部支付系统跟订单系统太不稳定导致的...

参考5)
接口支持幂等性的话,同一条流水只会执行一次,就算无返回,再次发起时会直接返回结果,不会执行的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容

  • 总摘要: 订单重复支付点击查看技术分享链接 2018-01-18摘要: 订单重复支付. 1. 问个问题,对于支付...
    六月星空2011阅读 1,203评论 0 3
  • 一、概述 支付系统是连接消费者、商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息...
    沉落的星星阅读 4,646评论 2 84
  • 退款,是一个易造成负体验的业务产品。原因是商户对于退款的要求务必退款成功、高效、快,而且又得很好地支撑业务,否则就...
    JANMING阅读 7,864评论 1 75
  • 每天不管太阳照射北半球多长时间,我住的屋子只能有片刻的阳光。 这片刻,发生于午饭后的半小时。屋子的阳台,与另一家房...
    岸芷与杜若阅读 646评论 2 6
  • 时间2017年11月15日23:43 1.还是有些摇摆不定 2.越想脑子越乱 3.越想心越乱 4.欲速则不达 5....
    小燕999阅读 180评论 0 3