支付訂單超時處理

業務場景:

一般電商下單流程中爲了釋放庫存會針對用戶下單做超時訂單交易關閉的處理,這裏一般都是15分鐘,30分鐘等。
使用隊列ActiveMQ處理超時訂單
在項目過程中遇到用戶停留在支付頁面15分鐘之後再進行支付,就會出現用戶付款,後臺已經把訂單當做超時處理爲交易關閉的訂單。
其實針對這種情景,支付寶和微信已經給出瞭解決方案:

支付寶:

官方文檔:
在這裏插入圖片描述
支付寶設置絕對超時時間,設置一個時間點,如果拉起支付,一直等待,超過設定的時間點,就會提示訂單超時。這裏代碼中的業務邏輯:訂單15分鐘未支付超時關閉訂單
獲取拉起支付時服務器時間,往後推遲15分鐘,獲取當前時間15分鐘之後的系統時間,設置爲絕對超時時間。在這裏插入圖片描述

// 獲取當前系統時間15分鐘之後的時間
Long currentTime = System.currentTimeMillis() + 15 * 60 * 1000;
Date date = new Date(currentTime);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String endTime = df.format(date);
model.setTimeExpire(endTime);// 訂單絕對超時時間

微信:

官方文檔:
在這裏插入圖片描述
微信設置起止時間,如果該筆支付訂單超過交易結束時間還未支付,則訂單交易關閉。
代碼示例:

Long currentTime = System.currentTimeMillis() + 15 * 60 * 1000;
Date date = new Date(currentTime);
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String endTime = df.format(date);
// 開始時間:獲取服務器當前時間
data.put("time_start", df.format(new Date()));
// 結束時間:服務器當前時間推遲15分鐘
data.put("time_expire", endTime);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章