Checkout Redesign — 規格書
作者: Developer Agent(Claude Opus 4.6) 日期: 2026-04-02 版本: v1
背景與目標
電商結帳流程的放棄率目前為 71%,高於業界均值 58%。熱圖分析顯示,最大流失點在「填寫收件資料」步驟(Step 2),有 39% 的用戶在此離開,其中手機用戶佔 83%。
目標:
- 結帳完成率提升至 45%(目前 29%)
- 手機端 Step 2 的放棄率從 39% 降至 20% 以下
- 平均結帳時間從 4 分 12 秒縮短至 2 分 30 秒 以內
現況問題
| 問題 | 影響 | 嚴重程度 |
|---|---|---|
| 共 6 個步驟,無法一眼看到終點 | 用戶不知道還要填多久,傾向放棄 | 高 |
| 收件表單有 11 個欄位,手機輸入負擔重 | 輸入錯誤率 28%,重填率高 | 高 |
| 不支援 Apple Pay / Google Pay | 手機用戶需手動填卡號 | 高 |
| 優惠碼輸入框在最後一步才出現 | 用戶為了找優惠碼離開頁面後不回來 | 中 |
| 每步驟切換都是全頁載入(~1.2s) | 體感緩慢,低端機型更明顯 | 中 |
設計決策
1. 步驟從 6 步壓縮至 3 步
舊版:購物車確認 → 登入 → 收件資料 → 付款方式 → 優惠碼 → 確認下單
新版:確認商品 → 收件 + 付款 → 完成
「確認商品」顯示購物車摘要 + 優惠碼輸入(提前至此步)。「收件 + 付款」合併在同一頁,減少來回切換的認知負擔。
為什麼合併而非刪除步驟: 用戶研究顯示,用戶不介意在同一頁填多個區塊,介意的是「不知道還要幾頁」。步驟數量的視覺感知比實際欄位數量更影響放棄率。
2. 收件表單智慧壓縮
11 個欄位 → 7 個必填欄位:
- 移除「公司名稱」(改為選填,折疊隱藏)
- 「縣市」+「區域」合併為地址自動完成(輸入郵遞區號自動填入)
- 「備註」移至完成頁(訂單確認後才填)
地址自動完成使用 Google Places Autocomplete,輸入前 3 個字後展開建議清單,選取後自動填入縣市、區域、郵遞區號。
為什麼不用 autofill: 瀏覽器 autofill 在 iOS Safari 的觸發邏輯不穩定,在 Webview 內更差。自建自動完成可控性更高。
3. 支付方式優先順序重排
1. Apple Pay / Google Pay(偵測到支援時,顯示在最上方)
2. 信用卡(預設展開)
3. 超商付款
4. ATM 轉帳
Apple Pay / Google Pay 用 Payment Request API 實作,不需用戶輸入卡號。偵測到裝置支援時自動置頂,並加上「快速結帳」badge。
為什麼置頂而非並排: 在 375px 螢幕上,並排的支付按鈕容易誤觸。置頂 + 全寬按鈕在手機上轉換率比並排高 23%(參考 Stripe 公開數據)。
4. 優惠碼提前至 Step 1
用戶在確認商品時即可輸入優惠碼,折扣即時反映在金額上。避免用戶在 Step 3 才發現有優惠碼、離開頁面去找、回來後 session 過期。
5. 步驟轉換改為 SPA 局部更新
步驟之間用 fetch + DOM 更新取代全頁載入,轉換時間從 1.2s 降至 < 100ms。進度列動畫同步更新,給用戶即時的前進感。
瀏覽器 Back 按鈕用 History API 處理,確保用戶可以回到上一步而不觸發頁面重整。
互動規格
表單驗證時機
| 欄位類型 | 驗證時機 |
|---|---|
| 必填文字欄位 | blur(離開欄位後) |
| 電話號碼 | blur + 格式即時提示(輸入中顯示期望格式) |
| 信用卡號 | keyup(每 4 碼自動加空格,即時 Luhn 驗證) |
| 信用卡有效期 | keyup(自動加 /,超出月份範圍即時提示) |
錯誤訊息規範
- 用正向引導語,不用否定句:「請輸入有效的電話號碼」而非「電話號碼格式錯誤」
- 出現在欄位下方,紅色
#DC2626,字體 14px - 用
aria-live="polite"宣告,螢幕閱讀器可讀到
無障礙規格
- 所有表單欄位有明確的
<label>(不用 placeholder 代替 label) - Tab 鍵順序符合視覺閱讀順序
- 錯誤狀態用
aria-invalid="true"+aria-describedby指向錯誤訊息 - 付款按鈕在 loading 狀態下用
aria-busy="true"+ disabled,避免重複送出
驗收標準
- Step 2 在 375px 寬度下,所有欄位可見且可操作,無橫向捲軸
- Apple Pay 按鈕在 iOS Safari 15+ 正確顯示,點擊後觸發 Apple Pay sheet
- 地址自動完成在輸入郵遞區號後 500ms 內顯示建議
- 步驟轉換時間 < 150ms(Lighthouse performance audit)
- Lighthouse Accessibility score ≥ 90
- VoiceOver 可完整操作 Step 1 → Step 2 → 完成,無跳過欄位
- 信用卡號輸入後,Luhn 驗證錯誤在 blur 後 300ms 內顯示
- A/B test:結帳完成率對照組差異達統計顯著(p < 0.05),樣本量 ≥ 1000 筆/組