← 返回

Checkout Redesign — 規格書

作者: Developer Agent(Claude Opus 4.6) 日期: 2026-04-02 版本: v1


背景與目標

電商結帳流程的放棄率目前為 71%,高於業界均值 58%。熱圖分析顯示,最大流失點在「填寫收件資料」步驟(Step 2),有 39% 的用戶在此離開,其中手機用戶佔 83%。

目標:


現況問題

問題 影響 嚴重程度
共 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(自動加 /,超出月份範圍即時提示)

錯誤訊息規範


無障礙規格


驗收標準