[{"data":1,"prerenderedAt":441},["ShallowReactive",2],{"merchant-context":3,"docs-navigation":4,"docs-page-\u002Fdocs\u002Fhosted-web\u002Fquickstart":132,"docs-surround-\u002Fdocs\u002Fhosted-web\u002Fquickstart":438},null,[5],{"title":6,"path":7,"stem":8,"children":9,"page":36},"Docs","\u002Fdocs","docs",[10,37,58,89,110],{"title":11,"icon":12,"path":13,"stem":14,"children":15,"page":36},"入門指南","i-lucide-compass","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[16,21,26,31],{"title":17,"path":18,"stem":19,"icon":20},"總覽","\u002Fdocs\u002Fgetting-started\u002Foverview","docs\u002F1.getting-started\u002F1.overview","i-lucide-map",{"title":22,"path":23,"stem":24,"icon":25},"快速開始","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":27,"path":28,"stem":29,"icon":30},"架構","\u002Fdocs\u002Fgetting-started\u002Farchitecture","docs\u002F1.getting-started\u002F3.architecture","i-lucide-network",{"title":32,"path":33,"stem":34,"icon":35},"Early Access Core","\u002Fdocs\u002Fgetting-started\u002Fearly-access-core","docs\u002F1.getting-started\u002F4.early-access-core","i-lucide-box",false,{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":36},"Partner Auth","i-lucide-shield","\u002Fdocs\u002Fpartner-auth","docs\u002F2.partner-auth",[43,48,53],{"title":44,"path":45,"stem":46,"icon":47},"授權流程","\u002Fdocs\u002Fpartner-auth\u002Fauthorization-flow","docs\u002F2.partner-auth\u002F1.authorization-flow","i-lucide-route",{"title":49,"path":50,"stem":51,"icon":52},"Scopes","\u002Fdocs\u002Fpartner-auth\u002Fscopes","docs\u002F2.partner-auth\u002F2.scopes","i-lucide-list-checks",{"title":54,"path":55,"stem":56,"icon":57},"Token 交換","\u002Fdocs\u002Fpartner-auth\u002Ftoken-exchange","docs\u002F2.partner-auth\u002F3.token-exchange","i-lucide-repeat-2",{"title":59,"icon":60,"path":61,"stem":62,"children":63,"page":36},"API 參考","i-lucide-braces","\u002Fdocs\u002Fapi-reference","docs\u002F3.api-reference",[64,69,74,79,84],{"title":65,"path":66,"stem":67,"icon":68},"授權預覽","\u002Fdocs\u002Fapi-reference\u002Fpreview","docs\u002F3.api-reference\u002F0.preview","i-lucide-scan-eye",{"title":70,"path":71,"stem":72,"icon":73},"授權","\u002Fdocs\u002Fapi-reference\u002Fauthorize","docs\u002F3.api-reference\u002F1.authorize","i-lucide-key-square",{"title":75,"path":76,"stem":77,"icon":78},"Token","\u002Fdocs\u002Fapi-reference\u002Ftoken","docs\u002F3.api-reference\u002F2.token","i-lucide-key-round",{"title":80,"path":81,"stem":82,"icon":83},"使用者 profile","\u002Fdocs\u002Fapi-reference\u002Fuser-profile","docs\u002F3.api-reference\u002F3.user-profile","i-lucide-user-round",{"title":85,"path":86,"stem":87,"icon":88},"KYC 申請","\u002Fdocs\u002Fapi-reference\u002Fkyc-application","docs\u002F3.api-reference\u002F4.kyc-application","i-lucide-scan-text",{"title":90,"icon":91,"path":92,"stem":93,"children":94,"page":36},"營運指引","i-lucide-settings","\u002Fdocs\u002Foperations","docs\u002F4.operations",[95,100,105],{"title":96,"path":97,"stem":98,"icon":99},"錯誤處理","\u002Fdocs\u002Foperations\u002Ferrors","docs\u002F4.operations\u002F1.errors","i-lucide-circle-alert",{"title":101,"path":102,"stem":103,"icon":104},"安全","\u002Fdocs\u002Foperations\u002Fsecurity","docs\u002F4.operations\u002F2.security","i-lucide-shield-check",{"title":106,"path":107,"stem":108,"icon":109},"版本管理","\u002Fdocs\u002Foperations\u002Fversioning","docs\u002F4.operations\u002F3.versioning","i-lucide-git-branch",{"title":111,"icon":112,"path":113,"stem":114,"children":115,"page":36},"網站身分驗證","i-lucide-scan-face","\u002Fdocs\u002Fhosted-web","docs\u002F5.hosted-web",[116,120,124,128],{"title":117,"path":118,"stem":119},"網站快速串接","\u002Fdocs\u002Fhosted-web\u002Fquickstart","docs\u002F5.hosted-web\u002F1.quickstart",{"title":121,"path":122,"stem":123},"狀態、回呼與通知","\u002Fdocs\u002Fhosted-web\u002Fresults-and-webhooks","docs\u002F5.hosted-web\u002F2.results-and-webhooks",{"title":125,"path":126,"stem":127},"登入位置紀錄","\u002Fdocs\u002Fhosted-web\u002Flogin-location","docs\u002F5.hosted-web\u002F3.login-location",{"title":129,"path":130,"stem":131},"沙盒與驗收","\u002Fdocs\u002Fhosted-web\u002Fsandbox-and-errors","docs\u002F5.hosted-web\u002F4.sandbox-and-errors",{"id":133,"title":117,"body":134,"description":432,"extension":433,"meta":434,"navigation":435,"path":118,"seo":436,"stem":119,"__hash__":437},"docs\u002Fdocs\u002F5.hosted-web\u002F1.quickstart.md",{"type":135,"value":136,"toc":426},"minimark",[137,140,144,148,160,177,180,235,356,386,389,403,406,409,412,422],[138,139,117],"h1",{"id":117},[141,142,143],"p",{},"Hosted Web KYC 讓會員在瀏覽器完成手機 OTP、證件與活體拍攝，不必先安裝 App。平台維護拍攝、續辦與審核頁，網站保留原本登入及業務規則。這是原 Early Access Core 之後的 v1 擴充，預設關閉；平台開通 Client 操作權限並提供隔離沙盒後才可串接。",[145,146,147],"h2",{"id":147},"準備",[141,149,150,151,155,156,159],{},"請向平台取得 HTTPS API 入口、Client ID、Client secret，並登記確切的回站網址。",[152,153,154],"code",{},"EKYC_API_BASE"," 為包含 ",[152,157,158],{},"\u002Fapi\u002Fpartner\u002Fv1"," 的完整入口。Client 必須歸屬一個 Merchant 及 production／sandbox 環境。正式與測試資料不得混用。",[141,161,162,163,166,167,166,170,166,173,176],{},"Secret 只放在網站後端。瀏覽器、JS、行動 App 及原始碼都不應包含它。操作權限為 ",[152,164,165],{},"verification.create","、",[152,168,169],{},"verification.read",[152,171,172],{},"verification.launch",[152,174,175],{},"login-locations.write","；平台可只核發所需權限。",[145,178,179],{"id":179},"最短整合流程",[181,182,183,187,202,216,223,232],"ol",{},[184,185,186],"li",{},"會員以網站原本的方式登入。",[184,188,189,190,193,194,197,198,201],{},"網站後端以 session 內的會員 ID 作 ",[152,191,192],{},"external_user_ref","，產生隨機 ",[152,195,196],{},"state"," 與 ",[152,199,200],{},"Idempotency-Key","。",[184,203,204,205,208,209,166,212,215],{},"後端呼叫 ",[152,206,207],{},"POST \u002Fapi\u002Fpartner\u002Fv1\u002Fverification-sessions","，保存回傳的 ",[152,210,211],{},"session_id",[152,213,214],{},"member_ref"," 與原帳號／登入工作階段對應。",[184,217,218,219,222],{},"瀏覽器導向 ",[152,220,221],{},"launch_url","。該網址為 10 分鐘、單次票券，不寫入日誌或 analytics。",[184,224,225,226,228,229,201],{},"會員送審後回到 allowlisted callback。後端確認原帳號仍登入且 ",[152,227,196],{}," 相符，再查詢 ",[152,230,231],{},"GET \u002Fapi\u002Fpartner\u002Fv1\u002Fverification-sessions\u002F{session_id}",[184,233,234],{},"待審案件以狀態查詢或已驗章 webhook 更新；query string 不代表核准。",[236,237,242],"pre",{"className":238,"code":239,"language":240,"meta":241,"style":241},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# 下列變數由後端安全設定提供；不要將實際 secret 貼入終端紀錄。\ncurl --fail-with-body --request POST \"$EKYC_API_BASE\u002Fverification-sessions\" \\\n  --user \"$EKYC_CLIENT_ID:$EKYC_CLIENT_SECRET\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --header \"Idempotency-Key: $TRANSACTION_ID\" \\\n  --data '{\"external_user_ref\":\"example-member-123\",\"return_url\":\"https:\u002F\u002Fpartner.example.invalid\u002Fekyc\u002Fcallback\",\"state\":\"replace-with-a-random-server-side-state\"}'\n","bash","",[152,243,244,253,287,308,325,342],{"__ignoreMap":241},[245,246,249],"span",{"class":247,"line":248},"line",1,[245,250,252],{"class":251},"sHwdD","# 下列變數由後端安全設定提供；不要將實際 secret 貼入終端紀錄。\n",[245,254,256,260,264,267,270,274,278,281,284],{"class":247,"line":255},2,[245,257,259],{"class":258},"sBMFI","curl",[245,261,263],{"class":262},"sfazB"," --fail-with-body",[245,265,266],{"class":262}," --request",[245,268,269],{"class":262}," POST",[245,271,273],{"class":272},"sMK4o"," \"",[245,275,277],{"class":276},"sTEyZ","$EKYC_API_BASE",[245,279,280],{"class":262},"\u002Fverification-sessions",[245,282,283],{"class":272},"\"",[245,285,286],{"class":276}," \\\n",[245,288,290,293,295,298,301,304,306],{"class":247,"line":289},3,[245,291,292],{"class":262},"  --user",[245,294,273],{"class":272},[245,296,297],{"class":276},"$EKYC_CLIENT_ID",[245,299,300],{"class":262},":",[245,302,303],{"class":276},"$EKYC_CLIENT_SECRET",[245,305,283],{"class":272},[245,307,286],{"class":276},[245,309,311,314,317,320,323],{"class":247,"line":310},4,[245,312,313],{"class":262},"  --header",[245,315,316],{"class":272}," '",[245,318,319],{"class":262},"Content-Type: application\u002Fjson",[245,321,322],{"class":272},"'",[245,324,286],{"class":276},[245,326,328,330,332,335,338,340],{"class":247,"line":327},5,[245,329,313],{"class":262},[245,331,273],{"class":272},[245,333,334],{"class":262},"Idempotency-Key: ",[245,336,337],{"class":276},"$TRANSACTION_ID",[245,339,283],{"class":272},[245,341,286],{"class":276},[245,343,345,348,350,353],{"class":247,"line":344},6,[245,346,347],{"class":262},"  --data",[245,349,316],{"class":272},[245,351,352],{"class":262},"{\"external_user_ref\":\"example-member-123\",\"return_url\":\"https:\u002F\u002Fpartner.example.invalid\u002Fekyc\u002Fcallback\",\"state\":\"replace-with-a-random-server-side-state\"}",[245,354,355],{"class":272},"'\n",[141,357,358,359,362,363,166,365,166,367,166,370,166,373,166,376,378,379,381,382,385],{},"回應外層為 ",[152,360,361],{},"data","，其中包含 ",[152,364,211],{},[152,366,214],{},[152,368,369],{},"status",[152,371,372],{},"revision",[152,374,375],{},"expires_at",[152,377,221],{}," 及公開結果。不要依 ",[152,380,221],{}," 或 ",[152,383,384],{},"status=submitted"," 自行判斷核准。",[145,387,388],{"id":388},"續辦與既有會員",[141,390,391,394,395,166,398,197,400,402],{},[152,392,393],{},"POST \u002Fverification-sessions\u002F{session_id}\u002Flaunch-links"," 核發新票券，請帶新的 ",[152,396,397],{},"return_url",[152,399,196],{},[152,401,200],{},"。票券到期只需重開入口，不重建已送審案件。",[141,404,405],{},"同一外站會員的草稿可續辦；已核准的回訪會員不需要每次拍臉。退件後由會員明確啟動重送。不要以相同手機或 Email 合併帳號；跨商戶重用身分必須在 eKYC 登入既有帳號並明確同意。",[141,407,408],{},"桌機可選 QR 接續：手機先 OTP，桌機確認配對短碼及遮罩門號後才允許拍攝。QR 只接續該次驗證，不移轉網站登入權限。",[145,410,411],{"id":411},"開發者交付物",[141,413,414,415,166,418,421],{},"原始碼交付包含 ",[152,416,417],{},"docs\u002Fopenapi\u002Fhosted-web-v1.yaml",[152,419,420],{},"examples\u002Fhosted-php73\u002F"," 的純 HTTP PHP 範例、webhook 驗章及 callback 比對。整合者只需使用公開 API，不需閱讀 Laravel／Flutter 內部程式。正式簡訊、真模型與手機實機另行驗收。",[423,424,425],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":241,"searchDepth":255,"depth":255,"links":427},[428,429,430,431],{"id":147,"depth":255,"text":147},{"id":179,"depth":255,"text":179},{"id":388,"depth":255,"text":388},{"id":411,"depth":255,"text":411},"透過後端建立短效驗證連結，讓會員在瀏覽器完成身分驗證並返回原網站。","md",{},true,{"title":117,"description":432},"gSI_fRNhEZRc8TIuKbwJF5JoRMd3kwo4GEF_cz0y1uI",[439,440],{"title":106,"path":107,"stem":108,"icon":109,"children":-1},{"title":121,"path":122,"stem":123,"children":-1},1793286051049]