问题描述 在美团点外卖时,提交订单后选择微信支付但不付款,切回后再选择支付宝支付,最终微信和支付宝都可能付款成功,出现一笔订单重复支付的情况。 技术角度分析 - 幂等性问题:同一笔订单通过不同支付渠道多次支付,系统未有效保证操作的幂等性。 - 多阶段原子性问题:支付流程的不同阶段(如选择支付方式、跳转支付渠道等)之间,原子性未得到严格保障。 可能的解决方案 - 聚合支付场景:在创建交易订单前,先判断是否存在处于交易过程中的订单,若有则不允许创建新订单。不过这种方法可能影响用户体验,例如用户误选支付方式且该支付方式余额不足时,可能无法再次尝试其他支付方式。 - 美团的处理方式(推测):允许用户通过不同渠道支付,支付完成后,若回调发现订单已支付,就进行退款处理。这是利用订单号的唯一性来实现的。 - 业务与产品层面:是否退款取决于业务需求和产品策略,存在业务方向上的选择。 测试注意事项 在测试过程中,要保证账户中有足够的资金,避免因账户余额不足而无法完成支付,从而影响对重复支付问题的测试。
点赞 1

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务