架構

理解行動端 callback 與 server-to-server 的資料路徑。

資料流

  1. 第三方 App 產生不可預測的 state 並開啟 ekyc://authorize。
  2. eKYC App 驗證會員身份,並向平台請求可信任的 Partner Auth preview。
  3. App 顯示 Application、Merchant、環境、最新 Eligibility 與所請求的 scopes。
  4. Laravel 記錄 consent,並建立有效期 5 分鐘、單次使用的 authorization code。
  5. eKYC App 只把 code 與 state 回傳到 allowlist 中的 callback。
  6. Application 後端以 client_secret 交換 code。
  7. 後端使用有效期 1 小時的 Bearer token 呼叫授權範圍內的身份 API。

商業與決策流

可信任的 ownership 鏈為 Organization → Merchant → Partner Client。KYC application、Device enrollment、Risk Signal 與 Eligibility decision 都保留 Merchant context。Partner 讀取一律採用 Client 所屬 Merchant 的視角,不接受串接方任意指定的 merchant identifier。

Production 環境的 KYC 核准、授權範圍內的 Partner identity/KYC/risk 讀取、正式 Eligibility decision,以及有效的 merchant-scoped Device heartbeat 或定位狀態,都會建立 append-only 的 Usage Event 紀錄。平台會依 verified identity、Organization 與 Asia/Taipei 曆月去重成一位每月有效會員。

信任邊界

行動端或瀏覽器端永遠不會拿到 partner client_secret。Callback 永遠不包含結構化 OCR 資料、證件影像、自拍影像、media path 或 partner access token。

Laravel 仍是身份、狀態、consent、存取控制與稽核的唯一權威。內部 ML service 只負責推論,不是對外的串接介面。