一、支付類型
目前微信支付的基礎(chǔ)支付類型有:JSAPI支付、APP支付、H5支付、Native支付、小程序支付、合單支付、付款碼支付。
二、問題
1、比如你有一個(gè)項(xiàng)目,分享到微信里后,接入了一個(gè)H5支付。用戶報(bào)名生成了訂單,調(diào)起了微信支付的界面。由于種種原因,用戶最終沒有付款,取消了支付。
2、然后用戶回到了你們的APP里,在APP個(gè)人的支付中心里,有這筆未支付的訂單,此時(shí)用戶想要再次支付,在調(diào)起微信支付時(shí),卻彈出了“201 商戶訂單號重復(fù)”的錯(cuò)誤。
其他支付類型也可以參考這個(gè)邏輯。
三、原因
是由于用戶換了支付類型,同一個(gè)訂單號在一個(gè)商戶號下需要保持唯一,即一個(gè)訂單號你通過H5或小程序下單了,就不可以再使用該訂單號調(diào)用APP支付接口。
四、解決方案
有一個(gè)簡單粗暴并且行之有效的解決方法,那就是再次支付時(shí),重新生成一個(gè)訂單號,即可完美解決。
五、注意事項(xiàng)
1、我們把第一次生成的訂單號稱為舊訂單號,把重新生成的訂單號稱為新訂單號。
2、在第一次生成訂單號時(shí),你可以把支付類型同步保存起來,當(dāng)?shù)诙卧僦Ц稌r(shí),若支付類型不相同,則表示用戶更換了支付類型,就重新生成一個(gè)訂單號。
3、重新生成訂單號后,同時(shí)需要把訂單表、報(bào)名表等與舊訂單號有關(guān)聯(lián)的表,同步更新替換成新訂單號。