跳转到主要内容

构造

new X402Server({
  client,          // Viem PublicClient
  facilitator,     // Facilitator 实例
  network?,        // 可选,默认从 client 推断
});

createRequirements(config)

{
  asset: string;
  maxAmountRequired: string;
  network?: string;
  scheme?: "exact";
  outputSchema?: Record<string, unknown>;
  paymentType?: "permit" | "eip3009" | "permit2" | "auto";
  resource?: string;
  description?: string;
  mimeType?: string;
  maxTimeoutSeconds?: number;
  extra?: Record<string, unknown>;
  autoDetect?: boolean; // 默认 true
}

其他方法签名

// 处理完整支付:parse → verify → settle
process(
  paymentHeader: string | undefined,
  expectedRequirements: PaymentRequirements
): Promise<ProcessResult>;

// 仅解析
parse(
  paymentHeader: string | undefined,
  expectedRequirements: PaymentRequirements
): ParseResult;

// 仅验证(基于 parse 后的数据)
verify(parsed: ParsedPayment): Promise<VerifyResult>;

// 仅结算(执行链上交易)
settle(parsed: ParsedPayment): Promise<SettleResult>;

// 预热 Token 能力缓存
initialize(tokens: string[]): Promise<InitResult>;

// 生成 402 响应体
get402Response(
  requirements: PaymentRequirements,
  error?: string,
  errorStage?: "parse" | "verify" | "settle"
): Response402;

// 清缓存
clearCache(tokenAddress?: string): Promise<void>;

关键入参与校验

  • paymentHeader:来自 req.headers["x-payment"],可能为 undefined
  • expectedRequirements:必须与受保护资源一致(network/asset/payTo/timeout 等)
  • 建议在创建后使用 Zod 校验 PaymentRequirementsSchema.parse(requirements)