商户支付的订单号由商户自定义生成仅支持使用字母、数字、中划线-、下划线_、竖线|、星号*这些英文半角字符的组合,请勿使用汉字或全角等特殊字符微信支付要求商户订单号保持唯一性(建议根据当前系统时间加随机序列来生成订单號)。重新发起一笔支付要使用原订单号避免重复支付;已支付过或已调用关单、撤销(请见后文的API列表)的订单号不能重新发起支付。
场景:使用微信支付在微信支付界面,由于余额不足等原因没有进行支付并关闭了支付页面,此时订单状态为“待支付”从业务角度来说,应该允许用户继续支付但是再次支付时,微信接口返回“201 商户订单号重复会有什么后果”的错误提示
解决办法:待支付的订单号(即商户订单号,out_trade_no)再次支付时,务必保持商品描述字段和上次请求的内容完全一致
另外,如果价格改变也不能重复提交,只能重新生成订单号重噺向微信发起支付请求
这是因为你更换了支付方式支付场景造成的订单号重复会有什么后果。
参考方案:回调时过滤比如订单号:123456;
小程序或公众号支付时,订单号合成为:JSAPP123456
回调的方法是┅个不管那种场景,接收到订单号时统一过滤掉APP、JSAPP、NATIVE重新得到订单123456。再继续处理自已的业务就行了