PAYMENT-SIGNATURE,然後用同一個請求重試。
差別在於訂單支付屬於平台 API,需要帳戶權杖;而直接呼叫 x402.acedata.cloud 的 AI API 可以只用 X402,不需要 API Token。
準備訂單
進入 Ace Data Cloud 控制台,選擇需要支付的訂單,記錄訂單 ID。 如果你還沒有訂單,可以在套餐頁面建立一個待支付訂單。訂單價格以頁面顯示為準,X402 402 回應中的amount 是最終簽名依據。
建立帳戶權杖
訂單支付請求需要帳戶權杖。開啟 平台 Token 頁面,建立一個platform-v1-... 格式的 token。
後續請求使用:
觸發 402
先發送一次不帶PAYMENT-SIGNATURE 的請求:
accepts:
x402Version 為 2,network 使用 CAIP-2 識別碼,金額欄位是 amount。
建立 10 Credits 訂單並觸發 402 的程式執行結果:
以下交易記錄為舊政策下的歷史實測樣本,金額和交易雜湊保留原樣。新 X402 訂單不再享有支付方式折扣;請以本次 402 回應的 amount 為簽名和付款依據。
- 訂單建立成功後狀態是
Pending,此時還沒有鏈上付款。 - 第一次
pay/請求沒有攜帶PAYMENT-SIGNATURE,所以返回 HTTP 402。 accepts同時給出 Baseexact和 Solanaexact,本教學後續選擇 Base。- 訂單建立時價格是
1.26,在舊 X402 支付優惠政策期間支付,實際簽名和結算金額為1.2USDC,對應1200000atomic USDC。
resource 是服務端返回並參與簽名的欄位,客戶端不要把其中的協定、路徑或訂單 ID 自行改寫。
簽名並重試
訂單支付可以重複使用@acedatacloud/x402-client 或 acedatacloud-x402 的底層簽名函式。下面是 TypeScript 範例:
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事件顯示付款地址向平台收款地址轉帳1200000atomic USDC,也就是1.2USDC。
成功回應與收據
訂單支付成功後,回應本文是訂單資訊。平台還會在回應標頭PAYMENT-RESPONSE 中攜帶 Base64 編碼的結算回應,解碼後常見欄位包括:
如果你需要對帳,建議同時儲存訂單 ID、付款錢包地址、
transaction 和訂單最終狀態。
注意事項
- 訂單支付需要平台帳戶權杖,不能只靠 X402 錢包簽名完成。
amount使用 USDC atomic units,1200000表示1.2USDC。- 不要自行拼接收款地址或資產地址,以 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。
