前段時間,在做一個網上商場的專案。在做秒殺模組時候,遇到一個棘手的問題。就是我設定的秒殺活動的庫存,總是莫名其妙的減少了。我是把減庫存放在微信支付的成功回撥裡面的。

查詢資料發現,原來微信支付成功之後微信伺服器會發送8次請求到回撥地址。這樣我這樣的做法就會導致庫存減少。

微信支付回撥會返回微信生成的訂單號以及我們自己生成的訂單號。

我的邏輯是這樣的,通過他返回的我們自己生成的訂單號去資料庫查詢訂單,訂單包含微信訂單號欄位transaction_id 。如果查詢到,且這個欄位為空的話我們就讓它繼續走邏輯。我們執行去修改庫存的操作和將微信生成的訂單號修改到訂單的相應的欄位。

這樣在相同請求到的時候,訂單的transaction_id的欄位已經不為空了,直接return。問題解決