繁中

IFF 實務教學

整合之前,
先檢查 x402 端點。

在連接付款邏輯前,先閱讀未付款即取得並已儲存的 x402 v2 證據,再選擇適合你角色的步驟。

閱讀圖解證據範例

教學範例 · · 非即時資料

閱讀圖解證據卡。

靜態的合成教學範例,數值僅供說明。此資源不代表真實的 observed 或 verified 卡片,開啟本頁也不會向服務提供者發出要求。

說明用數值非即時證據
資源
https://api.example.com/v1/resource
層級
observed Observed from public sources. Ownership not verified. Not an IFF-verified Evidence Card. 資料來自公開來源的觀測,所有權尚未驗證,也不是經 IFF 驗證的證據卡。
協定
valid · x402 v2 通過協定檢查。
付款選項
exact · eip155:8453 · synthetic token contract 0x…C3 · 1000 atomic units · payTo 0x…A1 合成值。縮寫識別碼僅供顯示,不能用作付款指示。
新鮮度
fresh at sample time 實際卡片會顯示觀測時間與間隔;使用前請重新檢查。
要求
current run: 4 observations 多次觀測相符;不能解釋服務提供者為何選擇這些條件。

你可以得出的結論

在真實卡片中,這些欄位表示監測器在觀測時間記錄了協定有效、未付款即取得的挑戰,其中包含列出的付款選項。

仍無法確定的事項

此範例不能證明所有權、付款安全性、服務交付、結算或服務提供者的意圖,也沒有真實報告、簽章或日誌證明。

API 使用者

使用前先檢查端點。

不需錢包、API 金鑰或付款,即可查看 IFF 的觀測。

準備
API 資源的完整正確 URL
你會取得
已儲存的公開證據卡(若有)
開啟即時查詢
  1. 使用資源路徑,不是網站首頁。

    開啟即時查詢,將完整 URL 貼上 x402 endpoint URL。服務提供者的首頁不會搜尋該網域上的所有 API。

    資源 URL 範例
    https://api.solmachina.com/v1/epoch

    此 URL 在 2026 年 9 月 6 日曾有公開證據。這只是範例,不代表推薦。

  2. 選擇付款網路,再按下「Inspect evidence」。

    Base、BSC、0G 與 Robinhood Chain 會篩選已儲存挑戰中的主網選項;All networks 包含測試網與其他網路。查詢不會呼叫服務提供者;選擇網路不能改變其接受的條件,也不能證明結算。

  3. 分別閱讀每個維度。

    所有權
    來源站控制權是否已驗證?observed 卡片仍可能未驗證。
    協定
    未付款的回應是否通過 x402 v2 檢查?這不是付款後結果的測試。
    新鮮度
    何時觀測,目前是否仍在監測時段內?
    可用性
    查看樣本數與時間範圍。缺少量測不代表通過。
了解每個證據欄位

代理程式與應用程式開發者

在付款邏輯前檢查證據。

比較用戶端收到的要求與 IFF 的獨立觀測。

準備
x402 v2 用戶端與付款政策
你會取得
比較判定,而非付款核准
開啟 SDK 教學
  1. 安裝預檢 SDK。

    使用 Node 20+ 或現代瀏覽器。不需 IFF API 金鑰。

    終端機
    npm install @ifandonlyif/x402-preflight
  2. 把已檢查的 fetch 傳入付款用戶端。

    包裝器會在付款程式庫動作前檢查 402。它不持有錢包金鑰,也不執行付款。

    TypeScript · 整合模式
    import { wrapFetch } from "@ifandonlyif/x402-preflight";
    
    const preflightFetch = wrapFetch(fetch, {
      onDiverged: "throw",
      onStale: "strict",
      onUnobserved: "warn",
    });
    
    // Pass preflightFetch as your payment client's fetch.
    // Creating this function alone makes no request.

    不是完整結帳流程。替代方式:verify()、HTTP API、MCP 指令。

  3. 決定應用程式如何處理不確定性。

    consistent
    比較相符。是否繼續仍由你的付款政策決定。
    diverged
    要求不同。此範例會在付款邏輯繼續前擲出錯誤。
    stale
    觀測已過期。strict 在過期且不相符時擲出錯誤,過期但相符時只提出警告。
    unobserved
    沒有可比較的觀測。此範例提出警告,不會自動阻擋。

端點擁有者

證明控制權,
開始操作。

API 流程。你不需要新網域,但必須控制端點的來源站。

準備
支援 personal-sign 的 Ethereum EOA 錢包(不支援合約錢包)、公開 x402 v2 端點、well-known 檔案存取權
你會取得
驗證成功後的擁有者存取權
開始錢包驗證
  1. 簽署伺服器登入挑戰。

    按照錢包驗證步驟要求挑戰,簽署其訊息,再提交簽章以取得存取權杖與更新權杖。權杖須保密;不要把私鑰傳給 IFF。

  2. 登錄正確的端點 URL。

    用存取權杖與端點資料呼叫 POST /api/v3/endpoints,儲存回傳的 claim_attempt_id 與 ownership 文件。登錄只是開始聲明流程,尚未授予擁有者存取權。

    請使用公開 HTTPS 的 443 連接埠,不得包含認證資料、查詢字串、片段或重新導向。

  3. 發布所有權檔案並將驗證排入佇列。

    提供回傳的 ownership.document,位置必須是指定且完全相符的 ownership.verification_url;通常是相同來源站的 /.well-known/iff-trust.json。挑戰會在 24 小時後到期。

    同一來源站若有多個端點,保留既有聲明,並依 claims 格式加入新聲明。

    呼叫 POST /api/v3/endpoints/:id/verify-ownership。202 只代表已排入佇列,不代表驗證完成;請用 GET /api/v3/endpoints 查看結果。

  4. 等待監測證據,再加入通知。

    擁有者存取權與公開證據彼此獨立。verified 層級首次發布需要所有權,加上至少三次通過的觀測。請持續公開所有權檔案,以便重新驗證。

    驗證後,可針對狀態或要求變更設定 Webhook。儲存只顯示一次的共用密鑰,驗證每次傳送的簽章與時間戳記,並將重試去重。

查看要求範例與所有權檔案規則

證據審查者

檢查簽署內容,
與信任決策分開處理。

檢查實驗性的簽署驗證結果封套 IFF Service Receipt v2。

準備
收據 JSON 或完整 API 回應;釘選還需透過獨立管道取得的簽發者資料
你會取得
簽章、簽發者、時間與繫結各自的檢查結果
開啟收據驗證工具(英文)
  1. 載入 JSON,不是 URL。

    貼上收據封套或完整 API 回應,或載入 JSON 檔案。端點 URL 請改用即時查詢。剖析與簽章檢查在瀏覽器內執行;簽發者檢查可能會取得 IFF 公開金鑰目錄。

    沒有收據?請開發者提供含 service_receipt 的 IFF 回應,可透過選用的直接 API 整合要求;一般回應不包含。

  2. 分開看待有效簽章與可信簽發者。

    簽章有效表示內嵌金鑰簽署了該主體;與目錄相符只是識別金鑰。若要獨立釘選,請輸入透過另一個可信管道取得的預期簽發者與完整 sha256: 金鑰指紋,不要從正在驗證的收據複製。

  3. 閱讀簽署主體、時間範圍與繫結。

    確認簽署的 URL 與結果符合預期。有效的舊簽章仍可能屬於已過期收據。單獨收據無法證明外層回應與簽署主體一致。

    只驗證收據簽章,不會驗證被引用的觀測、日誌收錄或鏈上錨定。

閱讀收據規格與驗證範圍

結果不如預期時

確認下一步。

沒有證據與檢查失敗需要不同處理。

檢查通過代表可以付款嗎?

不代表。協定有效性、所有權、新鮮度、要求一致性與收據真實性各自回答不同問題,沒有一項保證付費服務或其結果。請維持自己的付款政策與風險上限。