首页新闻找找看学习计划

如何避免一个订单,被多个支付方式支付

1
[待解决问题]

假设我们有一个系统订单A001,待支付,这时候用户支付这个订单跳转到了支付宝,同时他又在其他页面选择微信支付,然后两个都提交支付了,如何避免这种重复支付那?

想到的是生成支付宝付款跳转链接的时候记录状态,如果这时候再生成微信支付就不允许,但这样的话如果在支付包页面实际没有支付则可以能微信也无法支付了(当然可以定时间去查看下支付宝,但感觉不是理想处理方案)

he69的主页 he69 | 菜鸟二级 | 园豆:217
提问于:2015-09-26 17:01
< >
分享
所有回答(8)
1

你们的客户真好,付两份钱买一个东西。

爱编程的大叔 | 园豆:29784 (高人七级) | 2015-09-26 17:38

这是程序严谨性问题,如果客户卡,是很有可能的,做程序不能想当然的。支付上面出问题就是件麻烦事,你估计没做过什么真正的严密业务系统,做了你就不会有这样的初级疑问。

支持(0) 反对(2) he69 | 园豆:217 (菜鸟二级) | 2015-09-26 17:43

@he69: 这问题初级吗?你是做过多严密的业务啊

支持(0) 反对(0) goNew | 园豆:200 (初学一级) | 2019-05-30 09:11
0

订单应该在你们库里有一个状态吧,待支付之类的。客户支付的时候你们应该检测该订单是否已付款再执行吧!一般的支付页只有一个,最终客户选择的支付方式应该是其一。你说的这种情况,问的这个问题我真的没懂!还多个页面支付!

贫民窟大侠 | 园豆:4270 (老鸟四级) | 2015-09-26 22:27

可能我没讲清楚,在我们系统内可以保证他只能支付一次,但我们是没有支付牌照的,只能跳到银行、微信、支付宝、等,这些第三方机构支付,但这样就可能出现,他在微信,支付了一次,又在支付宝支付了一次,虽然我的系统内可以发现,但他已经支付了,这就会产生退款的问题,这个用户体验就不好了。就是想避免这种情况出现

支持(0) 反对(0) he69 | 园豆:217 (菜鸟二级) | 2015-09-29 10:01
0

不能在订单上加一个锁标记么,如果上锁了(第一个支付过程中,上个锁),在支付时先判断是否有锁?

JackWang-CUMT | 园豆:2826 (老鸟四级) | 2015-09-27 08:05

我也是这样想的,但什么时候解锁那?用户到支付页面后不能保证他就一定是付款了,可能直接关闭了,在下次支付的时候还是被锁定的

支持(0) 反对(0) he69 | 园豆:217 (菜鸟二级) | 2015-09-29 09:57

@he69: 

锁字段和是否支付应该是两个字段,支付过程中都要人为确认是否支付成功么(12306,淘宝等),如果用户点击支付失败,锁可以清除)

支持(0) 反对(0) JackWang-CUMT | 园豆:2826 (老鸟四级) | 2015-09-29 10:03

@JackWang-CUMT:支付状态和锁,是两个字段。

不用人为确定,是防止他在多个平台重复付款。即:付款-A->第三方支付平台-B->返回结果,即B阶段出现没返回时他又去其他平台付款

用户手动点?这个不合适把,他不管点什么我都不能直接信任呀

支持(0) 反对(0) he69 | 园豆:217 (菜鸟二级) | 2015-09-29 15:44
0

支付方确认扣款时应该会向你们再请求一次订单状态吧?不能说只要跳转过去了,就一定会支付成功。

XiaoFaye | 园豆:3082 (老鸟四级) | 2015-09-28 08:47
0

最好的办法,在支付的时候锁起来,

再就是订单状态,

还有以上的方法都应该同时存在,因为现在的支付比较复杂,

比如电脑,手机的扫一扫,可能扫了几次也正常不过了。

西丑扒黄 | 园豆:168 (初学一级) | 2015-09-28 08:54

我也是这样想的,但什么时候解锁那?用户到支付页面后不能保证他就一定是付款了,可能直接关闭了,在下次支付的时候还是被锁定的

支持(0) 反对(0) he69 | 园豆:217 (菜鸟二级) | 2015-09-29 09:55
0

生成订单的号死后 先获取订单号

然后提交订单 同时 给订单加上 乐观锁

微信支付就是这么干的

小眼睛老鼠 | 园豆:2771 (老鸟四级) | 2015-09-28 09:20

主要是到了第三方支付的时候没法控制,乐观锁已经在自己系统内有了

支持(0) 反对(0) he69 | 园豆:217 (菜鸟二级) | 2015-09-29 09:56

@he69: 第3方支付 会有的callback的 还有就是 第3方支付会自己判断的

支持(0) 反对(0) 小眼睛老鼠 | 园豆:2771 (老鸟四级) | 2015-09-29 15:55
0

lock

请叫我头头哥 | 园豆:9382 (大侠五级) | 2015-09-28 10:01
0

如果是支付宝,微信等第三方法支付,解决重复支付的问题的方法只能在第三方支付实现。

比如,一个订单在没有支付的时候可以多次打开。或者在没有支付的时候同时使用多个支付端进行扫描。

除非扫描自己公司的二维码,然后再进一步进行跳转到支付方。


看来我不懂

lucika.zh | 园豆:53 (初学一级) | 2015-09-28 10:58

同一个支付平台是不会重复的,支付平台现在的api都可以保证,但如果他用支付宝和微信就会出现重复,因为不是一个平台

支持(0) 反对(0) he69 | 园豆:217 (菜鸟二级) | 2015-09-29 10:03

@he69: 支付平台应该是这样的。如果要解决不同平台多次扫描支付问题,应该从源头上控制。
源头,应该是支付方的二维码,直接跳转到第三方支付平台。
应该支付之后,还可以撤单的。撤单的控制权在本系统内。这样问题就解决了。如果发现订单已支付,马上取消付款,第三方支付平台会将费用退回。

支持(0) 反对(0) lucika.zh | 园豆:53 (初学一级) | 2015-09-29 17:03

@lucika.zh: 这个体验不好呀,用户那里有退款单很容易产生疑问,这个也是想过的。决定这种问题在大多支付系统中都会用到,是不是有成熟的解决方案

支持(0) 反对(0) he69 | 园豆:217 (菜鸟二级) | 2015-09-29 18:18

@he69: 可以看一下团购网站。

支持(0) 反对(0) lucika.zh | 园豆:53 (初学一级) | 2015-09-30 15:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册