也許可以使用一些技術手段避免用戶下重單,但是心急的用戶可能會重啟流程/重啟App/重啟手機。在這種強制的手段下,任何技術手段都會失效——用戶壓根就不讓你的技術執行,你怎麼玩?
客戶端需要實現這樣一個下單界面。用戶點擊【確認下單】時,應該產生一個獨一無二的dedup key,連定訂單數據發送給伺服器端。在伺服器返回之前,該界面應該一直等待,直到伺服器響應成功/失敗或者超時發生(比如15秒後,收不到伺服器響應)。如果超時發生,應該向用戶提示是否重試下單或者退出該界面。當用戶點擊【重試】時,應該用剛剛生成的dedup key來再次發送下單請求——如果用戶一直不退出這個流程,每次用戶點擊重試,都應該用這個dedup key來重試下單,直到伺服器正常返回,或者用戶放棄返回。