沙盒與驗收
區分工程沙盒與正式上線驗收,測試續辦、錯綁防護、通知、定位及計費隔離。
沙盒與驗收
沙盒使用獨立 Client、DB、Redis、儲存與金鑰,所有資料屬於 sandbox,不得產生正式計費。測試 OTP 和 ML stub 只驗證流程,畫面必須標示測試模式;正式簡訊、真模型、受信任 HTTPS、手機實機和審核作業另行驗收。
建議測試順序
| 情境 | 預期結果 |
|---|---|
| 首次 OTP、證件、活體、送審 | 不需平台密碼,選填 Email 不影響送件 |
| 刷新、關頁、票券到期、跨日審核 | 同一案件可續辦,送審不因連結過期而消失 |
| QR 掃碼但桌機未確認 | 手機不能讀原會員資料或送件 |
| Callback 時已登出或換帳號 | 不錯綁,目前帳號不取得原會員結果 |
| 相同 key 重送/不同 payload | 相同內容冪等,不同內容 409 |
| 同 Merchant/環境重複身分 | 只有一個有效綁定,另一案件轉人工處理 |
| 不同 Client 存取資源 | 無法查詢或修改他人資料 |
| 停用 Client、Merchant 或 Organization | 商業閘門拒絕,沒有新計費 |
| Webhook 重複、亂序、暫時離線 | event ID 去重,舊版本不覆寫,恢復後補送 |
| 定位拒絕、逾時、不支援、未回報 | 狀態可辨識,不阻擋登入、不製造 App 失聯警報 |
| Sandbox 核准、讀取及重試 | 不出現正式 ledger 或月度計費人頭 |
錯誤處理
錯誤外層為 error_code、message、request_id。支援人員可用 request_id 查問題,不需要使用者提供證件影像、secret 或完整票券。
401:認證失敗,檢查後端設定,不能把 secret 放到瀏覽器補救。403:狀態或操作權限拒絕,由管理者處理。404:功能未開通或目前 Client 查不到資源。409 idempotency_conflict:同一 key 用了不同內容;原操作查結果,新操作用新 key。409 identity_already_bound:保留案件供人工處理,不自動解除既有綁定。422:輸入驗證失敗,依欄位修正。429:尊重Retry-After,避免立即重送。5xx/網路逾時:保持原操作 key 稍後重試,狀態顯示同步中。
不要把技術錯誤轉成 KYC rejected 或 Eligibility blocked。驗收紀錄應分開列工程測試、MySQL 併發、瀏覽器、手機實機及真模型,不能用其中一項代替其他項目。