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 settlement。- 订单最终状态是
Finished,pay_way是X402,pay_id写入链上交易哈希。 - BaseScan 上的
Transfer事件显示付款地址向平台收款地址转账1200000atomic USDC,也就是1.2USDC。
成功响应与收据
订单支付成功后,响应体是订单信息。平台还会在响应头PAYMENT-RESPONSE 中携带 Base64 编码的 settlement response,解码后常见字段包括:
如果你需要对账,建议同时保存订单 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。
