Appearance
S8 取消與退款
概述
處理所有場景的訂單取消與退款,包含取消資格判定、退款金額計算、退款執行與優惠券還原。不同場景有各自的取消政策與退款規則,從乘客自助取消到企業管理員批次取消,確保每筆取消都有明確的規則依據和完整的退款閉環。
執行者:乘客/家長(C2C)、企業管理員(B2B)、系統自動(退款重試)
觸發條件
- 乘客在歷史訂單中主動取消行程
- 企業管理員在後台取消班次或訂單
- 系統自動取消(如無司機接單、班次取消)
- 學期計畫變更導致的退費
Happy Path
步驟 1:發起取消請求
用戶或管理員在對應頁面選擇要取消的訂單,填寫取消原因。
步驟 2:取消資格判定
系統依據取消政策檢查是否允許取消:
| 判定項目 | 規則 |
|---|---|
| 時間限制 | 出發前指定時間(如 2 小時)內不可取消 |
| 例外條件 | 無司機接單時可隨時取消 |
| 角色限制 | 共乘發起者在已有人加入後不可取消 |
| 特殊日期 | 特殊日期配置可覆蓋預設規則 |
步驟 3:判定付款狀態與退款路徑
| 付款狀態 | 退款路徑 |
|---|---|
| 未付款 | 直接取消,無需退款 |
| 零元訂單(已確認) | 狀態更新,不呼叫支付 API |
| 已付款 | 計算退款金額,呼叫支付管道退款 API |
步驟 4:計算退款金額
依取消政策計算應退金額:
- 全額退款:符合取消時限規則
- 部分退款:超過免費取消期但仍在允許取消範圍內
- 不可退款:超過取消截止時間
步驟 5:執行退款
- 呼叫原支付管道的退款 API(TapPay / 綠界 / 其他)
- 退款成功:更新訂單狀態為「已退款」
- 退款金額原路退回至用戶原支付帳戶
步驟 6:附帶處理
- 優惠券還原:已使用的優惠券自動恢復為可用狀態
- 共乘重算:若為共乘行程,重新計算剩餘乘客的費用分攤
- 司機通知:通知已接單司機行程變更
- 座位釋放:釋放已佔用的座位供其他人預訂
步驟 7:發送通知
依場景發送取消確認與退款通知(LINE / Email / 簡訊)。
Worst Case
WC-1:禁止取消時段
- 觸發條件:用戶在出發前限定時間內嘗試取消已付款訂單
- 系統行為:阻止取消操作,顯示取消政策說明
- 處理方式:引導用戶聯繫客服處理特殊情況
WC-2:共乘發起者取消受限
- 觸發條件:共乘發起者在已有其他乘客加入後嘗試取消
- 系統行為:阻止發起者取消,避免影響其他乘客
- 處理方式:需所有加入者先退出,或聯繫客服協調
WC-3:退款 API 失敗
- 觸發條件:支付管道退款請求失敗(網路異常、服務不可用)
- 系統行為:訂單標記為「待退款」,自動排程次日重試
- 處理方式:系統持續重試,超過重試次數後轉人工處理
WC-4:部分退款爭議
- 觸發條件:用戶對部分退款金額有異議
- 系統行為:記錄爭議並通知管理員
- 處理方式:管理員審核取消時間與政策,確認後調整或維持原判
WC-5:批次取消異常
- 觸發條件:B2B 管理員取消整個班次時,部分訂單退款失敗
- 系統行為:成功的訂單正常取消,失敗的訂單標記為「待退款」
- 處理方式:失敗訂單進入自動重試佇列
WC-6:學期退費計算複雜
- 觸發條件:學期中途退出,需按比例計算退費
- 系統行為:依已使用天數與剩餘天數計算退費金額
- 處理方式:系統計算後由管理員確認,再執行退款
場景差異表
| 維度 | C2C 彈性取消 | B2B 管理員取消 | 學期計畫退費 |
|---|---|---|---|
| 取消發起人 | 乘客本人 | 企業管理員 | 家長或學校管理員 |
| 取消時限 | 出發前 2 小時 | 依合約約定 | 依學期退費政策 |
| 退款計算 | 全額或不退 | 依合約條款 | 按比例計算 |
| 退款方式 | 原路退回(7 個工作天) | 從帳單扣除或退回帳戶 | 退回繳費帳戶 |
| 優惠券還原 | 自動還原(特殊券除外) | 不適用 | 不適用 |
| 共乘影響 | 重算其他乘客費用 | 不適用 | 不適用 |
| 批次操作 | 不支援 | 支援整班次取消 | 支援批次退費 |
| 通知對象 | 取消者 + 共乘對方 + 司機 | 所有受影響乘客 + 司機 | 家長 + 學校 |
所屬主流程
| 主流程 | 關聯 | 說明 |
|---|---|---|
| M2 需求收集 | 觸發 | 乘客在預訂後取消行程 |
| M4 行程執行 | 觸發 | 行程中異常導致取消 |
| M5 結算與回顧 | 觸發 | 結算階段的取消退款處理 |
| S7 支付 | 呼叫 | 退款時呼叫支付管道退款 API |