Token Pay · 按量付费

按 Token、按次、按量,自动计量自动结算。付费 API 返回 402 Payment Required, Agent 自动完成支付并重试 —— 这是为 AI 时代设计的 HTTP 原生计费方式。

What is Token Pay

什么是按量付费(402)?

当 Agent 调用一个付费 API、数据接口或 Skill 服务时,最自然的计费方式不是「先充值再使用」, 而是 HTTP 原生的按量付费:服务端对未付费请求返回 402 Payment Required 状态码并声明支付条件(金额、币种、收款方), Agent 支付后携带凭据重试,服务端放行。这就是 x402 协议确立的「挑战-响应」模式, 微信支付的 X402 与多家国际实践都采用这一语义。

Token Pay 在此之上补齐了计费与结算:按调用次数、按 Token 用量、按数据量 或阶梯定价自由计量;幂等键防止网络重试造成的重复扣费;每一笔调用在任务预算内校验, 实时汇入统一账单。

计费公式:费用 = 单价(¥/次 · ¥/1K Token · ¥/GB)× 实际用量,阶梯与包量可叠加。
适合谁:付费 API 与数据服务方、模型服务、Skill 服务提供者。
402-challenge.json · 服务端响应
HTTP/1.1 402 Payment Required
Content-Type: application/json
PAYMENT-REQUIRED: x402, payhub

{
  "scheme":    "exact",
  "amount":    "0.50",
  "currency":  "CNY",
  "recipient": "merchant_id_123",
  "resource":  "marketdata/v1",
  "metering":  { "unit": "call" }
}

# Agent 支付后带 PAYMENT-RESPONSE 头重试 → 200 OK
Capabilities

核心能力

多维计量计费

按次、按 Token、按数据量、阶梯定价与包量套餐自由组合,费率改动即时生效。

402 挑战标准

统一的支付条件格式,兼容 402 / 200 两种触发模式,响应头与响应体双通道声明。

幂等与防重

Idempotency-Key 全链路幂等,网络超时重试不会重复扣费,掉单自动对账。

实时账单

每次调用实时入账,按任务、按 Agent、按资源多维汇总,收入与用量双向可查。

How it works

挑战-响应,四步闭环

未付费 → 402

Agent 请求付费资源,服务端返回 402 与标准化支付条件。

challenge

解析并支付

Agent 把挑战转发给 PayHub resolve-402,预算校验、选路、扣款一次完成。

resolve-402

携带凭据重试

PayHub 返回统一凭据,Agent 注入 PAYMENT-RESPONSE 头重试原请求。

retry

计量与结算

服务端验证凭据、按实际用量计量,账单实时更新,款项清算到账。

metering
Benchmark

对标同类产品

对标支付宝 · A2M 按量计费

AI-to-Machine 计费体系

  • 支付宝面向 AI 到机器(A2M)的调用场景提供按量计费与 AI 钱包预算管控,用户可设预算、限场景、查账单。
  • 能力深度绑定支付宝生态内的资源与账户体系。
  • PayHub 的关系:Token Pay 复用 A2M 通道与预算语义,同时开放给任意自建 API / 独立服务,一个 402 格式通吃。

对标微信支付 · X402 按次付费

pay.weixin.qq.com · AI 支付后台

  • 微信 X402 定义了 pay_type=GOODS_PAY、pay_mode=AUTH_AND_PAY 的按次付费模型,支持 402 / 200 两种触发模式,15 分钟授权超时。
  • 支付凭据经 payment_code 传递,建议响应体外附加可剥离支付提示块以兼容只读 body 的 Agent。
  • PayHub 的关系:这些格式差异由适配层吸收——你的服务端只产出统一 402 格式,走哪个通道由路由决定。

按量付费在两大生态各有协议方言,Token Pay 是它们之上的普通话 —— 服务端一次实现,全部 Agent 可读、可付、可重试。

Quickstart

服务端返回 402,只需一个中间件

middleware.ts
// 未携带支付凭据的请求 → 返回标准化 402 挑战
export function payhubGate(pricing) {
  return (req, next) => {
    if (!req.headers["payment-response"]) {
      return new Response(JSON.stringify({
        scheme: "exact",
        amount:  pricing.amount,        // 如 "0.50"
        currency: "CNY",
        recipient: pricing.merchantId,
        resource:  pricing.resourceId,
        metering:  pricing.metering,    // { unit: "call" | "token" | "gb" }
      }), { status: 402, headers: { "PAYMENT-REQUIRED": "payhub" } });
    }
    return next(req);  // PayHub 验签通过后正常放行
  };
}
FAQ

常见问题

如何防止恶意刷 402 挑战(不付费只探测)?
402 响应只含支付条件、不含资源数据,探测无收益;结合限频、KYA 信誉分级与挑战有效期(最长 15 分钟),可进一步压缩滥用空间。
Agent 的预算用完了会怎样?
PayHub 会在预算耗尽前(80%)推送 budget.warning 通知,耗尽后阻断后续支付并通知用户与 Agent,任务可申请追加预算后继续。
支持阶梯定价和大客户包量吗?
支持。按量阶梯(用量越大单价越低)、包量套餐、月结账期可与按次计费叠加,大客户走商务定制。
网络超时导致 Agent 重复请求,会扣两次钱吗?
不会。所有支付接口支持 Idempotency-Key 幂等,24 小时内相同键的请求返回同一结果,重复重试不重复扣费。

让你的 API,按调用收费

一个中间件接入 402 计费,Agent 用户即买即用、无需充值。