检查公开入口
Facilitator 能力声明:facilitator、supportedKinds 和协议端点,说明能力元数据正常。API 资源发现已退役;请直接调用目标 API,并以实时 402 响应为准。
Facilitator 支持能力:
kinds,说明 Facilitator 入口正常。
检查 402 accepts
发送一个不会扣费的无认证请求:
accepts 中是否包含你要使用的网络。network 是 CAIP-2 标识:
eip155:8453+exact(Base)eip155:8453+upto(Base,后置计量)eip155:1187947933+exact(SKALE)solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp+exact(Solana)
运行 X402Client 高级验证工具
X402Client 仓库提供高级验证工具,可用于确认 402 响应选择、签名生成、paid retry 和链上 settlement。它们需要 funded wallet、RPC、私钥和开发依赖。普通业务接入建议优先使用 TypeScript 或 Python SDK;只有在需要定位签名或链上结算问题时,再运行这些工具。 仓库地址:https://github.com/AceDataCloud/X402Client- 第一次请求的 402 响应。
- 选中的 payment requirement。
- 签名后的
PAYMENT-SIGNATURE摘要。 - 重试后的 HTTP 状态和响应体。
- 链上 settlement transaction,或失败时的 Facilitator 错误原因。
PAYMENT-SIGNATURE 发到日志系统或工单里。
公开 API 验证结果示例:
- SKALE
exact、Baseexact、Solanaexact和 Baseupto都完成了 HTTP 402 到 HTTP 200 的 paid retry。 - SKALE
exact的链上交易已在 SKALE explorer 可查,结算金额是0.095215USDC。 - Base
exact的链上交易已在 BaseScan 可查,结算金额是95215atomic USDC。 - Base
upto的签名上限是95215atomic USDC,但实际链上 settlement 是3atomic USDC,说明后置计量按真实用量扣款。 - Solana 路径已确认 paid retry 和模型输出。公开 RPC 可能限流;需要严格链上对账时,请使用自有 Solana RPC 或平台侧结算记录确认交易签名。
SDK smoke test
高级验证工具用于检查签名和链上结算。业务侧还应执行 SDK smoke test,确认应用代码能够通过 payment handler 自动处理 402。下面只展示核心片段,完整代码需要补齐钱包、provider 和 import。 TypeScript:exact。SKALE 目前只提供 exact,按 402 报价的固定金额结算,不会随真实 token 用量下调。聊天补全属于按 token 计量的场景,正式接入时建议改用 Base 并传 preferScheme: 'upto',按真实用量结算。
SDK smoke test 的程序运行结果:
- TypeScript SDK 通过
createX402PaymentHandler自动处理 402、签名和重试,最终拿到ADC_TS_SDK_X402_OK。 - Python SDK 通过
create_x402_payment_handler完成同样链路,最终拿到ADC_PY_SDK_X402_OK。 - 两个 smoke test 都使用 SKALE payer
0xd0479FA9FD8C678303d477433d24C15e3723CC1C。 - Python SDK 返回对象是
dict,示例中可使用res["choices"][0]["message"]["content"]读取内容。
订单支付 E2E
订单支付使用platform.acedata.cloud 的平台 API,需要平台账户令牌。完整链路是:创建 Pending 订单,POST /api/v1/orders/{order_id}/pay/ 触发 402,然后带 PAYMENT-SIGNATURE 重试。
小额订单支付验证结果示例:
以下交易记录为旧政策下的历史实测样本,金额和交易哈希保留原样。新 X402 订单不再享支付方式折扣;请以本次 402 响应的 amount 为签名和付款依据。
- 创建订单后,订单状态是
Pending,价格是1.26。 - 第一次
pay/请求返回 HTTP 402,accepts中有 Baseexact和 Solanaexact,金额都是1200000atomic USDC。 - 带 Base
PAYMENT-SIGNATURE重试后返回 HTTP 200,订单状态变为Finished,pay_way是X402。 PAYMENT-RESPONSE解码后显示success=True、network=base,并给出同一个交易哈希。- BaseScan 上交易状态是
1,转账金额是1200000atomic USDC,也就是1.2USDC。 - 创建价
1.26在旧 X402 支付优惠政策期间支付,最终签名与结算金额为1.2USDC。
Authorization: Bearer {platform_token},或者订单不属于当前账户,会在平台权限层失败;这和直接调用 x402.acedata.cloud 的无账户 X402 API 不同。
常见错误
Base upto 检查清单
upto 目前只在 Base 上提供(eip155:8453)。SKALE 只提供 exact。由于 upto 签名会绑定更多 EVM typed data 参数,接入时应特别确认 402 响应中的实时字段与客户端签名完全一致。
upto 返回 invalid_upto_evm_payload_invalid_signature,优先检查:
- API 返回的
eip155:8453+upto条目里的extra.chainId(应为8453)。 - API 返回的
extra.facilitatorAddress。 https://facilitator.acedata.cloud/supported返回的 Baseuptofacilitator 地址。- Permit2 domain、spender、USDC 合约和签名账户。
- 钱包是否已经对 Base USDC approve Permit2。
upto 的签名 digest 同时绑定 Permit2 domain、chain ID、spender、收款地址、facilitator 地址和 validAfter。任意一项不一致,Facilitator 都会恢复出错误 signer,从而返回 invalid signature。若这些都一致但仍返回 402,下一步检查 Permit2 allowance;未授权时返回 PERMIT2_ALLOWANCE_REQUIRED。
保存验证信息
一次完整验证至少保存:- API path 和请求体摘要;
- 选中的 network 和 scheme;
maxAmountRequired;- payer 钱包地址;
- HTTP 最终状态;
- 响应中的模型输出或任务 ID;
- settlement transaction 链接;
- Gateway trace ID 或平台使用记录 ID。
PAYMENT-SIGNATURE、完整 EIP-712 signature 或助记词。
结构化支付错误
签名后的 X402 失败会在extensions.acedatacloud.paymentError 返回稳定 code、安全插值参数、阶段和可重试标志。优先使用该结构排查,不要解析顶层英文 error,也不要要求用户提供钱包签名或链上模拟原文。
charged: false:验证在结算前明确拒绝,本次没有发起扣款。- 不含
charged:结果未知或已进入结算阶段,先查订单和链上状态,禁止直接重复支付。 settlement_pending:暂勿重复支付,先刷新订单或联系支持。- 未识别 code:按
payment_failed处理,并保留公开技术代码供客服检索。

