Secure Elements 是什麼
Secure Elements 是一個 JavaScript SDK,@fluz/secure-elements,可將由 Fluz 代管、相互隔離的框架直接掛載進你頁面上的容器元素中。該框架負責渲染卡片資料;你的頁面與伺服器只會持有一個短效、不透明的權杖,用於授權單一次的特定動作。
這是展示使用者自身卡片詳細資訊的第三種方式,與你已具備的兩種方式並列:
若你已經在所有情境下使用 Embedded Widget,就不需要這個工具。Secure Elements 適用於無頭或 API 駆動的整合,仍需向使用者顯示 PAN、到期日與 CVV,但不想開啟完整小工具模態框,或不打算追求
PCI_COMPLIANCE。運作方式
你的後端鑄造 client token
將你現有的 Fluz OAuth access
token 交換成短效的
client token,其範圍限於單次揭示。
你的前端掛載框架
將 client token 交給
@fluz/secure-elements,它會把 Fluz 代管的框架掛載到你提供的容器中 — 直接內嵌於頁面,而非模態框。SDK 透過回呼回報結果
你的頁面永不讀取原始卡片資料。它只能接收成功、錯誤或掛載事件。
先決條件
- 你的應用程式已向 Fluz 註冊,且在你的 access token 上啟用了
CREATE_VIRTUALCARDscope。 - 你擁有狀態為
ACTIVE、且屬於欲揭示之帳戶的虛擬卡 id,將在鑄造 client token 時一併傳入。
環境
在 Fluz 與處理方的整合完成前,Staging 的揭示目前會回傳模擬結果。請使用 staging 以端到端驗證你的整合 — 生產可用性將另行確認。
frameHostOrigin 在 createCardViewer 中為選填 — 省略時預設為生產環境(https://secure.fluz.app)。若要指向 staging,請明確傳入。僅接受上述兩個精確的來源;傳入其他值會在呼叫 createCardViewer 時立即擲出 FluzElementsError(error.code === "INVALID_FRAME_HOST_ORIGIN"),在任何框架掛載前就中止。
載入 SDK
@fluz/secure-elements 不會發佈到 npm — 請以 <script> 標籤從 Fluz 的 CDN 載入瀏覽器全域(IIFE)版本。它會暴露一個 FluzSecureElements 全域:
FluzSecureElements 解構所需成員。
每次發佈都會提供不可變的鎖定版本路徑(.../v0.1.0/index.global.js)以及一個浮動的 .../latest/index.global.js,永遠指向最新版本。除原型外,請鎖定至特定版本 — latest 可能在未通知的情況下變動。
目前僅 staging 的 CDN 主機上線(
secure-cdn-staging.fluz.app)。
生產環境的託管將與生產 API 可用性一併確認。鑄造 client token
你的後端使用你已透過標準 OAuth 授權流程 取得的 Fluz OAuth access token 呼叫此端點。切勿將該 access token 傳至瀏覽器 — 僅將此端點回傳的clientToken / loadToken 配對提供給前端。
201。兩個權杖皆是單一用途且短效 — 每次揭示都需鑄造一組新配對。clientToken 用於授權實際的揭示(有效期為 expiresIn 秒,預設 300);loadToken 的範圍更嚴格(60 秒),因為它會出現在 URL 中 — 參見 Card Reveal 的說明 — 且除了載入框架外,將在其他情境被拒絕。直接將兩者傳入 createCardViewer,並切勿自行將 clientToken 放入 URL — SDK 已幫你避免這點。
欄位樣式設定
createCardViewer 可接受選填的 style 物件,將套用於其掛載的每個欄位:
style 會在任何內容傳至框架前先行驗證。若某個值不符合以下文件規範,await viewer.mount(...) 會以 FluzElementsError(error.code === "INVALID_STYLE")拒絕 — 若你本身允許可配置的樣式輸入,請以 try/catch 包覆 mount() 呼叫。
fontFamily 必須與以下兩個允許清單之一完全、區分大小寫地匹配:
- 系統字型 — 常見的作業系統/安全網頁字型(
system-ui、-apple-system、Helvetica Neue、Arial、Georgia、Menlo,以及通用關鍵字monospace/serif/sans-serif等)。這些會立即渲染,無需網路請求。 - Google Fonts — 任何來自 Google Fonts 目錄的家族(
"Roboto"、"Inter"、"IBM Plex Mono"等),須與 Google 所列之名稱完全相同。SDK 會替你載入字型 — 你不需要<link>標籤或@font-face規則。
Google Font 會在欄位掛載之後取用,而非事先打包,因此在冷快取的短暫時間內,欄位會先以瀏覽器的後備字型渲染,再切換為你設定的字型。系統字型則不會有此延遲。
內容安全政策(CSP)
若你的頁面設定了 CSP,請允許你所使用的框架主機:安全模型
- 你的 OAuth access token 永不離開你的伺服器。
- 前端持有的 client token 是不透明且單一用途 — 它不攜帶任何卡片資料,且無法重播至其他卡片或動作。
- 卡片資料只會在 Fluz 代管的框架內可讀,並與你頁面自身的 JavaScript 隔離。每個設定的欄位都會以獨立的沙箱(
allow-scripts allow-same-origin allow-forms)、referrerPolicy="no-referrer"的 iframe 掛載 — SDK 絕不會把卡片資料放在其外的 DOM 中。 - 框架僅會在你已事先向 Fluz 登記的來源網域中渲染。
下一步
卡片揭示
建立卡片檢視器、掛載它,並控制要揭示的欄位。
即時示範
觀看在 staging 上執行的卡片檢視器,包含完整揭示、僅揭示 CVV,以及遮罩模式。
範例整合
可執行的純 HTML 與 React 範例,皆呼叫真實的 staging 基礎設施。
OAuth 應用程式
如何取得你要用來交換 client token 的 access token。