Skip to main content
除了直接按 API 請求付費,Ace Data Cloud 也支援用 X402 支付控制台訂單。訂單支付和 API 呼叫的核心協定相同:第一次請求返回 402,客戶端簽出 PAYMENT-SIGNATURE,然後用同一個請求重試。 差別在於訂單支付屬於平台 API,需要帳戶權杖;而直接呼叫 x402.acedata.cloud 的 AI API 可以只用 X402,不需要 API Token。

準備訂單

進入 Ace Data Cloud 控制台,選擇需要支付的訂單,記錄訂單 ID。 如果你還沒有訂單,可以在套餐頁面建立一個待支付訂單。訂單價格以頁面顯示為準,X402 402 回應中的 amount 是最終簽名依據。

建立帳戶權杖

訂單支付請求需要帳戶權杖。開啟 平台 Token 頁面,建立一個 platform-v1-... 格式的 token。 後續請求使用:
帳戶權杖不同於一般 API Token。一般 API Token 用於消費 API 額度;帳戶權杖用於代表你的帳戶操作平台資源,例如訂單支付。

觸發 402

先發送一次不帶 PAYMENT-SIGNATURE 的請求:
返回狀態為 402,回應中包含 accepts:
訂單支付走的是官方 x402 v2:x402Version 為 2,network 使用 CAIP-2 識別碼,金額欄位是 amount。 建立 10 Credits 訂單並觸發 402 的程式執行結果:
以下交易記錄為舊政策下的歷史實測樣本,金額和交易雜湊保留原樣。新 X402 訂單不再享有支付方式折扣;請以本次 402 回應的 amount 為簽名和付款依據。
結果說明:
  • 訂單建立成功後狀態是 Pending,此時還沒有鏈上付款。
  • 第一次 pay/ 請求沒有攜帶 PAYMENT-SIGNATURE,所以返回 HTTP 402。
  • accepts 同時給出 Base exact 和 Solana exact,本教學後續選擇 Base。
  • 訂單建立時價格是 1.26,在舊 X402 支付優惠政策期間支付,實際簽名和結算金額為 1.2 USDC,對應 1200000 atomic USDC。
注意這裡 resource 是服務端返回並參與簽名的欄位,客戶端不要把其中的協定、路徑或訂單 ID 自行改寫。

簽名並重試

訂單支付可以重複使用 @acedatacloud/x402-client 或 acedatacloud-x402 的底層簽名函式。下面是 TypeScript 範例:
同一個訂單用 Base exact 簽名並重試後的程式執行結果:
鏈上確認結果:
結果說明:
  • status 200 表示平台訂單支付介面接受了這次 PAYMENT-SIGNATURE。
  • has_x_payment_response True 表示回應標頭包含 Base64 編碼的 PAYMENT-RESPONSE 收據。
  • settle_header.success=True 且 network=base 表示 Facilitator 已完成 Base 結算。
  • 訂單最終狀態是 Finished,pay_way 是 X402,pay_id 寫入鏈上交易雜湊。
  • BaseScan 上的 Transfer 事件顯示付款地址向平台收款地址轉帳 1200000 atomic USDC,也就是 1.2 USDC。

成功回應與收據

訂單支付成功後,回應本文是訂單資訊。平台還會在回應標頭 PAYMENT-RESPONSE 中攜帶 Base64 編碼的結算回應,解碼後常見欄位包括: 如果你需要對帳,建議同時儲存訂單 ID、付款錢包地址、transaction 和訂單最終狀態。

注意事項

  • 訂單支付需要平台帳戶權杖,不能只靠 X402 錢包簽名完成。
  • amount 使用 USDC atomic units,1200000 表示 1.2 USDC。
  • 不要自行拼接收款地址或資產地址,以 402 回應中的 accepts 為準。
  • 如果同一個 PAYMENT-SIGNATURE 被重複提交,Facilitator 會按 nonce 做重放保護。

支付失敗回應

未攜帶 PAYMENT-SIGNATURE 的第一次 HTTP 402 是正常支付挑戰,不代表支付失敗。簽名後的驗證或結算失敗仍保留標準的字串 error 作為相容性保底,並在 extensions.acedatacloud.paymentError 回傳穩定的錯誤結構:
用戶端應優先按 code 在地化,未知 code 回退到通用支付失敗。charged 是三態欄位:只有明確在結算前拒絕時才會回傳 false;欄位缺失表示扣款狀態未知,不能解釋為「未扣款」。目前訂單進入 Failed 後不能原單重試,請修正錢包問題後建立新訂單。 不要記錄或提交完整 PAYMENT-SIGNATURE、錢包簽名、授權 payload、Facilitator 原始診斷或 RPC 回應。客服排查只需訂單 ID 和公開的錯誤 code。