2021-01-15 记一次微信支付订单号重复问题
生活随笔
收集整理的這篇文章主要介紹了
2021-01-15 记一次微信支付订单号重复问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題
今天系統突然出現訂單號重復的問題,但通過日志觀察,并沒發現訂單號有重復的(使用redis的incr生成),于是猜測可能是之前測試的時候用過這些訂單號,但未支付的訂單在商戶上也查不到,所以最終只能通過代碼的方式來處理。
處理
因為用的是第三方封裝的微信支付jar,所以通過捕獲其異常,如果是訂單號重復,那么就重新生成訂單號再次下單。
雪花算法
不過try-catch來處理,每次下單也是需要耗費時間的
于是參考了雪花算法,據說只要是時間不回溯,編號就不會重復,可以看看這篇文章,感覺還不錯
-
個人理解
一個long(64bit),由幾部分組成
1bit(符號位)
41bit(毫秒數)
10bit(機器標識[機房id + 機器id 或跟業務相關的id])
12bit(序列號[如果1ms進入多個請求就根據這個來區別])
由上可知主導還是時間,只要時間不回去的話,重復的概率還是很低的,而且這個生成不依賴于數據庫(我是依賴于redis),方便
總結
以上是生活随笔為你收集整理的2021-01-15 记一次微信支付订单号重复问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初识地图编辑器
- 下一篇: 微擎支付返回商户单号_微信app支付对接