一、支付类型
目前微信支付的基础支付类型有:JSAPI支付、APP支付、H5支付、Native支付、小程序支付、合单支付、付款码支付。
二、问题
1、比如你有一个项目,分享到微信里后,接入了一个H5支付。用户报名生成了订单,调起了微信支付的界面。由于种种原因,用户最终没有付款,取消了支付。
2、然后用户回到了你们的APP里,在APP个人的支付中心里,有这笔未支付的订单,此时用户想要再次支付,在调起微信支付时,却弹出了“201 商户订单号重复”的错误。
其他支付类型也可以参考这个逻辑。
三、原因
是由于用户换了支付类型,同一个订单号在一个商户号下需要保持唯一,即一个订单号你通过H5或小程序下单了,就不可以再使用该订单号调用APP支付接口。
四、解决方案
有一个简单粗暴并且行之有效的解决方法,那就是再次支付时,重新生成一个订单号,即可完美解决。
五、注意事项
1、我们把第一次生成的订单号称为旧订单号,把重新生成的订单号称为新订单号。
2、在第一次生成订单号时,你可以把支付类型同步保存起来,当第二次再支付时,若支付类型不相同,则表示用户更换了支付类型,就重新生成一个订单号。
3、重新生成订单号后,同时需要把订单表、报名表等与旧订单号有关联的表,同步更新替换成新订单号。
有话要说