跳转到主要内容

客户端示例

  • 最简集成
  • 完整示例(Node + viem)
  • React示例(wagmi + viem)
import { wrapFetchWithPayment } from "x402x-fetch";
import { parseEther } from "viem";
const fetchWithPay = wrapFetchWithPayment(fetch, walletClient, parseEther("0.01")); // 设置最大支付额度
const res = await fetchWithPay("https://api.example.com/premium", { method: "POST" });

工作流程

  1. 调用受保护资源 → 收到 402
  2. 解析 accepts → 选择一个 requirements
  3. 生成支付签名(Permit/EIP-3009/Permit2)
  4. 设置 X-Payment 重试请求 → 返回 200

最佳实践

  • 始终设置 maxValue,避免过额支付
  • 对多选项资源可传入 selector 优先 Token
  • 失败时打印 payload 与 402 体,便于定位

常见问题

  • 余额不足/过期/nonce 错误 → 按错误提示重新签名
  • 网络切换后失败 → 确保 network 与 requirements 匹配

相关