项目接入微信支付有一段时间了,一直都很正常,今天有个客户反馈说订单支付报错。看了下日志,错误信息是:“201 商户订单号重复”。
仔细查了下微信支付官方文档和社区,确认了问题和解决方案,记录一下。
微信支付继续不能再发起一笔和之前订单号一样的订单,是只能在之前的订单上完成该笔订单。所以你如果需要再发起一笔支付,需要更换商户订单号。
微信支付技术助手8
这里的在之前的订单上完成该笔订单还大有说法,目前微信支付的基础支付类型有:JSAPI支付、APP支付、H5支付、Native支付、小程序支付、合单支付、付款码支付。不仅订单信息要完全一致,就连支付类型也必须一致。也就是说创建微信支付订单时使用的是JASPI支付,那么再次调用该订单支付时也要时JSAPI支付,如果这时换成了小程序支付,那也会报商户订单号重复!
解决办法官方也回复了:就是重新生成订单号再发起支付即可。
注意事项:
1、我们把第一次生成的订单号称为旧订单号,把重新生成的订单号称为新订单号。重新生成订单后要关闭旧订单,避免万一重复支付。
2、在第一次生成订单号时,你可以把支付类型同步保存起来,当第二次再支付时,若支付类型不相同,则表示用户更换了支付类型,就重新生成一个订单号。
3、重新生成订单号后,同时需要把订单表、报名表等与旧订单号有关联的表,同步更新替换成新订单号。