[{"data":1,"prerenderedAt":641},["ShallowReactive",2],{"merchant-context":3,"docs-navigation":4,"docs-page-\u002Fdocs\u002Fhosted-web\u002Fresults-and-webhooks":132,"docs-surround-\u002Fdocs\u002Fhosted-web\u002Fresults-and-webhooks":638},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":121,"body":134,"description":632,"extension":633,"meta":634,"navigation":635,"path":122,"seo":636,"stem":123,"__hash__":637},"docs\u002Fdocs\u002F5.hosted-web\u002F2.results-and-webhooks.md",{"type":135,"value":136,"toc":627},"minimark",[137,141,145,268,283,300,304,314,317,321,324,334,345,607,620,623],[138,139,121],"h1",{"id":140},"狀態回呼與通知",[142,143,144],"h2",{"id":144},"各欄位的責任",[146,147,148,161],"table",{},[149,150,151],"thead",{},[152,153,154,158],"tr",{},[155,156,157],"th",{},"欄位",[155,159,160],{},"意義",[162,163,164,192,221,235,245,255],"tbody",{},[152,165,166,173],{},[167,168,169],"td",{},[170,171,172],"code",{},"status",[167,174,175,176,179,180,179,183,179,186,179,189],{},"Hosted 操作進度：",[170,177,178],{},"created","、",[170,181,182],{},"in_progress",[170,184,185],{},"submitted",[170,187,188],{},"cancelled",[170,190,191],{},"expired",[152,193,194,199],{},[167,195,196],{},[170,197,198],{},"merchant_kyc_status",[167,200,201,202,179,205,179,208,179,211,179,214,217,218],{},"該商戶 KYC：",[170,203,204],{},"draft",[170,206,207],{},"pending",[170,209,210],{},"under_review",[170,212,213],{},"approved",[170,215,216],{},"rejected","，尚無申請時為 ",[170,219,220],{},"null",[152,222,223,228],{},[167,224,225],{},[170,226,227],{},"identity_verified",[167,229,230,231,234],{},"有效外站綁定所指身分已驗證；未完成綁定時為 ",[170,232,233],{},"false","，不是平台全域 user 查詢",[152,236,237,242],{},[167,238,239],{},[170,240,241],{},"binding_status",[167,243,244],{},"此外站帳號的身分綁定結果",[152,246,247,252],{},[167,248,249],{},[170,250,251],{},"membership_status",[167,253,254],{},"該商戶會籍是否可用",[152,256,257,262],{},[167,258,259],{},[170,260,261],{},"eligibility",[167,263,264,265,267],{},"已存在的後端決策快照及時間；沒有決策為 ",[170,266,220],{},"，網站不得重算",[269,270,271,274,275,278,279,282],"p",{},[170,272,273],{},"member_ref"," 是 Client 專屬外站會員參照，不取代原 Partner Auth 的 ",[170,276,277],{},"sub","。同 Merchant、同環境、同 verified identity 只容許一個有效外站帳號；",[170,280,281],{},"identity_already_bound"," 應顯示人工處理入口，不覆寫綁定，也不能揭露另一帳號。",[269,284,285,286,179,289,292,293,296,297,299],{},"驗證完成且目前可用時，同時確認 ",[170,287,288],{},"binding_status=active",[170,290,291],{},"merchant_kyc_status=approved"," 與 ",[170,294,295],{},"available=true","。商業或會籍停用會改變可用性，但不抹除歷史 ",[170,298,227],{},"；各欄位分開呈現。遊戲權限仍由網站負責，本次玖天試接只提示及記錄。",[142,301,303],{"id":302},"callback","Callback",[269,305,306,307,292,310,313],{},"Callback 只追加 ",[170,308,309],{},"session_id",[170,311,312],{},"state","。網站後端必須比對發起交易保存的帳號、登入事件、session ID 及 state；使用常數時間比較 state，成功比對後消耗一次交易。若已登出或換帳號，要求登入原帳號，不把驗證結果綁到目前的其他會員。",[269,315,316],{},"無論 callback 帶什麼資料，結果都由 Server API 查詢。服務暫時不可用時顯示「同步中」並重試，不能把錯誤當成核准、退件或封鎖。",[142,318,320],{"id":319},"簽章-webhook","簽章 webhook",[269,322,323],{},"平台只送到預先登記的 HTTPS endpoint。請讀取原始 HTTP body，再驗證：",[325,326,332],"pre",{"className":327,"code":329,"language":330,"meta":331},[328],"language-text","X-Ekyc-Timestamp: \u003CUnix seconds>\nX-Ekyc-Event-Id: \u003Cevent UUID>\nX-Ekyc-Key-Id: \u003C登記的 signing key ID>\nX-Ekyc-Signature: \u003Clowercase hex HMAC-SHA256>\n\nsignature = HMAC-SHA256(signing_secret, timestamp + \".\" + raw_body)\n","text","",[170,333,329],{"__ignoreMap":331},[269,335,336,337,340,341,344],{},"使用專用 webhook signing secret，不是 Client secret。伺服器時間應同步；timestamp 與接收時間差超過 300 秒時拒絕。簽章使用常數時間比對，body 的 ",[170,338,339],{},"id"," 必須與 ",[170,342,343],{},"X-Ekyc-Event-Id"," 一致。",[325,346,350],{"className":347,"code":348,"language":349,"meta":331,"style":331},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"id\": \"00000000-0000-4000-8000-000000000001\",\n  \"type\": \"verification.session.updated\",\n  \"version\": 2,\n  \"occurred_at\": \"2026-10-04T02:00:00+08:00\",\n  \"data\": {\n    \"member_ref\": \"00000000-0000-4000-8000-000000000002\",\n    \"session_id\": \"00000000-0000-4000-8000-000000000003\",\n    \"status\": \"submitted\",\n    \"identity_verified\": true,\n    \"merchant_kyc_status\": \"approved\",\n    \"binding_status\": \"active\",\n    \"membership_status\": \"active\"\n  }\n}\n","json",[170,351,352,361,388,409,427,448,463,485,505,524,538,557,577,595,601],{"__ignoreMap":331},[353,354,357],"span",{"class":355,"line":356},"line",1,[353,358,360],{"class":359},"sMK4o","{\n",[353,362,364,367,370,373,376,379,383,385],{"class":355,"line":363},2,[353,365,366],{"class":359},"  \"",[353,368,339],{"class":369},"spNyl",[353,371,372],{"class":359},"\"",[353,374,375],{"class":359},":",[353,377,378],{"class":359}," \"",[353,380,382],{"class":381},"sfazB","00000000-0000-4000-8000-000000000001",[353,384,372],{"class":359},[353,386,387],{"class":359},",\n",[353,389,391,393,396,398,400,402,405,407],{"class":355,"line":390},3,[353,392,366],{"class":359},[353,394,395],{"class":369},"type",[353,397,372],{"class":359},[353,399,375],{"class":359},[353,401,378],{"class":359},[353,403,404],{"class":381},"verification.session.updated",[353,406,372],{"class":359},[353,408,387],{"class":359},[353,410,412,414,417,419,421,425],{"class":355,"line":411},4,[353,413,366],{"class":359},[353,415,416],{"class":369},"version",[353,418,372],{"class":359},[353,420,375],{"class":359},[353,422,424],{"class":423},"sbssI"," 2",[353,426,387],{"class":359},[353,428,430,432,435,437,439,441,444,446],{"class":355,"line":429},5,[353,431,366],{"class":359},[353,433,434],{"class":369},"occurred_at",[353,436,372],{"class":359},[353,438,375],{"class":359},[353,440,378],{"class":359},[353,442,443],{"class":381},"2026-10-04T02:00:00+08:00",[353,445,372],{"class":359},[353,447,387],{"class":359},[353,449,451,453,456,458,460],{"class":355,"line":450},6,[353,452,366],{"class":359},[353,454,455],{"class":369},"data",[353,457,372],{"class":359},[353,459,375],{"class":359},[353,461,462],{"class":359}," {\n",[353,464,466,469,472,474,476,478,481,483],{"class":355,"line":465},7,[353,467,468],{"class":359},"    \"",[353,470,273],{"class":471},"sBMFI",[353,473,372],{"class":359},[353,475,375],{"class":359},[353,477,378],{"class":359},[353,479,480],{"class":381},"00000000-0000-4000-8000-000000000002",[353,482,372],{"class":359},[353,484,387],{"class":359},[353,486,488,490,492,494,496,498,501,503],{"class":355,"line":487},8,[353,489,468],{"class":359},[353,491,309],{"class":471},[353,493,372],{"class":359},[353,495,375],{"class":359},[353,497,378],{"class":359},[353,499,500],{"class":381},"00000000-0000-4000-8000-000000000003",[353,502,372],{"class":359},[353,504,387],{"class":359},[353,506,508,510,512,514,516,518,520,522],{"class":355,"line":507},9,[353,509,468],{"class":359},[353,511,172],{"class":471},[353,513,372],{"class":359},[353,515,375],{"class":359},[353,517,378],{"class":359},[353,519,185],{"class":381},[353,521,372],{"class":359},[353,523,387],{"class":359},[353,525,527,529,531,533,535],{"class":355,"line":526},10,[353,528,468],{"class":359},[353,530,227],{"class":471},[353,532,372],{"class":359},[353,534,375],{"class":359},[353,536,537],{"class":359}," true,\n",[353,539,541,543,545,547,549,551,553,555],{"class":355,"line":540},11,[353,542,468],{"class":359},[353,544,198],{"class":471},[353,546,372],{"class":359},[353,548,375],{"class":359},[353,550,378],{"class":359},[353,552,213],{"class":381},[353,554,372],{"class":359},[353,556,387],{"class":359},[353,558,560,562,564,566,568,570,573,575],{"class":355,"line":559},12,[353,561,468],{"class":359},[353,563,241],{"class":471},[353,565,372],{"class":359},[353,567,375],{"class":359},[353,569,378],{"class":359},[353,571,572],{"class":381},"active",[353,574,372],{"class":359},[353,576,387],{"class":359},[353,578,580,582,584,586,588,590,592],{"class":355,"line":579},13,[353,581,468],{"class":359},[353,583,251],{"class":471},[353,585,372],{"class":359},[353,587,375],{"class":359},[353,589,378],{"class":359},[353,591,572],{"class":381},[353,593,594],{"class":359},"\"\n",[353,596,598],{"class":355,"line":597},14,[353,599,600],{"class":359},"  }\n",[353,602,604],{"class":355,"line":603},15,[353,605,606],{"class":359},"}\n",[269,608,609,610,612,613,615,616,619],{},"範例欄位由伺服器產生。事件不含證件、手機明文、影像或座標。請以 event ID 唯一鍵持久去重，並在同一交易內更新會員快照與最高 ",[170,611,416],{},"；較舊版本不覆寫新狀態，重複事件回成功。Webhook ",[170,614,416],{}," 與 Server API ",[170,617,618],{},"revision"," 是不同序列，不直接比較。",[269,621,622],{},"持久保存後才回 2xx；暫時無法保存時回 5xx。平台請求逾時 10 秒、退避重送最多 24 小時、不跟隨 3xx。接收端不要在 HTTP request 內執行長時間作業。通知遺失時仍可用 Server API 恢復狀態。",[624,625,626],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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":331,"searchDepth":363,"depth":363,"links":628},[629,630,631],{"id":144,"depth":363,"text":144},{"id":302,"depth":363,"text":303},{"id":319,"depth":363,"text":320},"區分驗證操作進度與商戶核准結果，並安全處理回站、簽章通知、重試與亂序。","md",{},true,{"title":121,"description":632},"DwRi4fqm9sghGZOcCh5JNTXtQXuV15PBhg4hPZQSkMo",[639,640],{"title":117,"path":118,"stem":119,"children":-1},{"title":125,"path":126,"stem":127,"children":-1},1793286051050]