StableOps

在线 x402 测试

在线请求 x402 沙盒资源,查看 HTTP 402 响应中的付款要求,并验证 Agent Payments 接入流程。

x402 是基于 HTTP 的机器支付协议。资源服务器先返回 402 Payment RequiredPAYMENT-REQUIRED 响应头。付款方签署授权后,再携带 PAYMENT-SIGNATURE 请求同一资源。

检查付款要求

下面的面板只读取你填入的资源地址实际返回的 402 挑战。网络、资产、金额、收款地址和付款方案都以响应为准,面板不预设 Base Sepolia、USDC 或 exact。它不会在浏览器中持有私钥、创建 Intent 或付款。

在线 x402 测试

请求你填入的资源地址,查看它实际返回的 HTTP 402 付款挑战。

这是 Agent 传给 x402Fetch 的地址。

此页面只检查卖方的付款挑战;实际付款请使用 @stableops/agent-sdk 和签名器 Sidecar。

const result = await agent.x402Fetch("https://x402-base-sepolia-resource.vercel.app/api/x402/resource")
成功读取挑战不代表资源或报价可信。在支付前,必须把响应中的网络、资产、金额、收款地址和付款方案与预期配置逐项核对。这个面板不会连接钱包或发起付款。

在 Agent 中请求资源

完整付款必须运行在服务端 Node.js Agent 中:

import { SettlementUnknownError } from '@stableops/agent-sdk'

try {
  const result = await agent.x402Fetch(process.env.X402_RESOURCE_URL!, {
    idempotencyKey: 'sandbox-resource:demo-1',
  })

  if (result.status === 'paid') {
    const body = await result.response.text()
    const payment = await agent.getPayment(result.intentId)
    console.log({ body, paymentStatus: payment.status })
  } else if (result.status === 'awaiting_approval') {
    console.log(`等待审批:${result.intentId}`)
  } else {
    console.log(await result.response.text())
  }
} catch (error) {
  if (error instanceof SettlementUnknownError) {
    console.error(`结算结果未知,只能核对原 Intent:${error.intentId}`)
  }
  throw error
}

同一笔购买重试时必须复用相同幂等键。审批通过后,应把原 intentId 作为 resumeIntentId 恢复,而不是创建新 Intent。

status: 'paid' 表示付费 HTTP 请求得到了可靠响应,不保证控制面已经确认 settled。最终状态以 agent.getPayment(intentId)、管理客户端查询或签名 Webhook 为准。

完整的策略、预算、钱包和签名器配置见快速开始

这篇文档怎么样?

最后更新

本页内容