4 回答

TA貢獻(xiàn)1793條經(jīng)驗 獲得超6個贊
支付寶異步通知過來一切以訂單號為基準(zhǔn),根據(jù)其他參數(shù),去你的數(shù)據(jù)庫檢查訂單是否已經(jīng)處理,未處理更新訂單狀態(tài)已處理則忽略異步通知,直接輸出success告訴支付寶異步通知數(shù)據(jù)已處理。

TA貢獻(xiàn)1995條經(jīng)驗 獲得超2個贊
你的思路錯了,并不是一接收回調(diào)success的時候就進(jìn)行處理.
1.在發(fā)起請求的時候判斷支付狀態(tài),先杜絕重復(fù)發(fā)起支付的問題.
2.在支付回調(diào)頁面中收到支付成功時先判斷訂單付款狀態(tài),一旦收到支付成功則對InnoDB表進(jìn)行訂單狀態(tài)更改為已支付并通知支付寶success且在前臺頁面轉(zhuǎn)向成功頁.即可杜絕因回調(diào)處理不當(dāng)引起的重復(fù)支付.
這樣,不管是用戶不慎重復(fù)請求,還是你回調(diào)重復(fù)都不會影響訂單狀態(tài)了.
簡要的流程;
發(fā)起(判斷狀態(tài))=支付=回調(diào)(收到支付成功時,先判斷訂單狀態(tài))=更改訂單狀態(tài)(一般訂單表應(yīng)該為事務(wù)表)=通知回調(diào)結(jié)果給支付寶與用戶付款頁=支付結(jié)束.
你的問題出在了你收到回調(diào)時就進(jìn)行了寫入而不先訂單狀態(tài).這樣是不明智的做法.
- 4 回答
- 0 關(guān)注
- 708 瀏覽
添加回答
舉報