你们的客户真好,付两份钱买一个东西。
这是程序严谨性问题,如果客户卡,是很有可能的,做程序不能想当然的。支付上面出问题就是件麻烦事,你估计没做过什么真正的严密业务系统,做了你就不会有这样的初级疑问。
@he69: 这问题初级吗?你是做过多严密的业务啊
订单应该在你们库里有一个状态吧,待支付之类的。客户支付的时候你们应该检测该订单是否已付款再执行吧!一般的支付页只有一个,最终客户选择的支付方式应该是其一。你说的这种情况,问的这个问题我真的没懂!还多个页面支付!
可能我没讲清楚,在我们系统内可以保证他只能支付一次,但我们是没有支付牌照的,只能跳到银行、微信、支付宝、等,这些第三方机构支付,但这样就可能出现,他在微信,支付了一次,又在支付宝支付了一次,虽然我的系统内可以发现,但他已经支付了,这就会产生退款的问题,这个用户体验就不好了。就是想避免这种情况出现
不能在订单上加一个锁标记么,如果上锁了(第一个支付过程中,上个锁),在支付时先判断是否有锁?
我也是这样想的,但什么时候解锁那?用户到支付页面后不能保证他就一定是付款了,可能直接关闭了,在下次支付的时候还是被锁定的
@he69:
锁字段和是否支付应该是两个字段,支付过程中都要人为确认是否支付成功么(12306,淘宝等),如果用户点击支付失败,锁可以清除)
@JackWang-CUMT:支付状态和锁,是两个字段。
不用人为确定,是防止他在多个平台重复付款。即:付款-A->第三方支付平台-B->返回结果,即B阶段出现没返回时他又去其他平台付款
用户手动点?这个不合适把,他不管点什么我都不能直接信任呀
支付方确认扣款时应该会向你们再请求一次订单状态吧?不能说只要跳转过去了,就一定会支付成功。
最好的办法,在支付的时候锁起来,
再就是订单状态,
还有以上的方法都应该同时存在,因为现在的支付比较复杂,
比如电脑,手机的扫一扫,可能扫了几次也正常不过了。
我也是这样想的,但什么时候解锁那?用户到支付页面后不能保证他就一定是付款了,可能直接关闭了,在下次支付的时候还是被锁定的
生成订单的号死后 先获取订单号
然后提交订单 同时 给订单加上 乐观锁
微信支付就是这么干的
主要是到了第三方支付的时候没法控制,乐观锁已经在自己系统内有了
@he69: 第3方支付 会有的callback的 还有就是 第3方支付会自己判断的
lock
如果是支付宝,微信等第三方法支付,解决重复支付的问题的方法只能在第三方支付实现。
比如,一个订单在没有支付的时候可以多次打开。或者在没有支付的时候同时使用多个支付端进行扫描。
除非扫描自己公司的二维码,然后再进一步进行跳转到支付方。
看来我不懂
同一个支付平台是不会重复的,支付平台现在的api都可以保证,但如果他用支付宝和微信就会出现重复,因为不是一个平台
@he69: 支付平台应该是这样的。如果要解决不同平台多次扫描支付问题,应该从源头上控制。
源头,应该是支付方的二维码,直接跳转到第三方支付平台。
应该支付之后,还可以撤单的。撤单的控制权在本系统内。这样问题就解决了。如果发现订单已支付,马上取消付款,第三方支付平台会将费用退回。
@lucika.zh: 这个体验不好呀,用户那里有退款单很容易产生疑问,这个也是想过的。决定这种问题在大多支付系统中都会用到,是不是有成熟的解决方案
@he69: 可以看一下团购网站。