x402 协议深度解析:用一个 HTTP 状态码,重建互联网的支付层

x402 协议深度解析:用一个 HTTP 状态码,重建互联网的支付层

导语

互联网有一个"遗憾"。

1997 年,HTTP/1.1 规范定义了一个状态码——402 Payment Required。设计者的初衷是:当客户端访问一个需要付费的资源时,服务器返回 402,客户端完成支付后重试请求。

但 28 年来,这个状态码一直处于"保留"状态,从未被正式启用。原因很简单:当时没有原生的互联网支付基础设施。 信用卡体系是离线的,PayPal 是中心化的,没有一种支付方式能像 HTTP 请求一样即时、无摩擦、可编程。

直到 2025 年。

区块链上的稳定币(USDC、USDT)提供了可编程的即时支付能力,AI Agent 创造了海量的机器对机器微支付需求——HTTP 402 终于等到了它的时代。

2025 年 5 月,Coinbase 推出了 x402 协议——一个将 HTTP 402 状态码变成真正可用的互联网原生支付标准的开源协议。2025 年 12 月,x402 V2 发布,从"单一 API 调用付费"进化为"统一互联网支付层"。

截至目前,x402 已处理超过 1 亿笔支付,覆盖 API、应用程序和 AI Agent 场景。

本文是系列最后一篇,将深入 x402 的技术内核。

官方网站:https://x402.org
GitHub:https://github.com/coinbase


一、HTTP 402:沉睡 28 年的状态码

1.1 HTTP 状态码的设计哲学

HTTP 协议为不同的响应场景预留了数百个状态码。我们熟悉的:

  • 200 OK:请求成功
  • 404 Not Found:资源不存在
  • 403 Forbidden:没有权限
  • 401 Unauthorized:未认证

402 Payment Required 的含义是:资源存在,你也认证了,但你需要付费才能访问。

1.2 为什么 402 从未被启用?

时期 障碍 具体原因
1997~2010 无互联网原生支付 信用卡需要人工输入卡号,无法嵌入 HTTP 流程
2010~2020 中心化支付的限制 PayPal/Stripe 需要注册账户、预存信息,不适合即时微支付
2020~2024 微支付经济不成立 传统支付的每笔手续费($0.30+)高于微交易本身

三个条件在 2025 年同时成熟:

  1. 稳定币:USDC 等链上稳定币实现了即时、低成本、可编程的价值转移
  2. AI Agent:创造了海量的机器对机器微支付需求(API 按次调用、Agent 间服务交易)
  3. Layer 2 网络:Base、Solana 等高性能链将交易成本降至几乎可忽略

x402 的核心洞察:互联网缺失的不是支付的"能力",而是支付的"协议层"。 HTTP 早已预留了接口(402),现在终于有了与之匹配的基础设施。


二、x402 的设计哲学:五个零

x402 的设计遵循"五个零"原则,与传统支付形成鲜明对比:

原则 含义 对比传统支付
零协议费 使用 x402 协议本身不收费,只需支付底层链的 gas 费 信用卡收 2~3% 手续费
零等待 支付速度等同于互联网传输速度 信用卡结算需要 T+1~T+3
零摩擦 无需注册账户,无需填写个人信息 需要注册、绑卡、KYC
零中心化 任何人都可以构建和扩展 x402 依赖 Stripe/PayPal 等中心化平台
零限制 中立标准,不绑定特定区块链 绑定特定支付网络

用一句话概括 x402 的设计哲学:让支付像访问网页一样自然——发送 HTTP 请求,付费,获取数据。


三、核心工作流:402 支付循环

3.1 基本流程

x402 的支付流程极其简洁,只有四步:

sequenceDiagram participant C as 客户端(人类/Agent) participant S as 服务端(API/内容提供商) participant BC as 区块链网络 C->>S: 1. HTTP GET /weather?city=beijing S-->>C: 2. HTTP 402 Payment Required<br/>(附带支付要求:金额、链、币种、收款地址) C->>BC: 3. 链上支付(稳定币转账) BC-->>C: 支付凭证(交易哈希) C->>S: 4. HTTP GET /weather?city=beijing<br/>(附带支付凭证) S->>BC: 验证支付凭证 BC-->>S: 确认有效 S-->>C: 5. HTTP 200 OK + 天气数据

3.2 402 响应的结构

当服务端返回 HTTP 402 时,响应中包含支付要求的详细信息:

HTTP/1.1 402 Payment Required
Content-Type: application/json

{
  "x402": {
    "version": "2",
    "accepts": [
      {
        "network": "base",
        "asset": "USDC",
        "amount": "0.001",
        "payTo": "0x1234...abcd",
        "description": "Weather data - single query"
      },
      {
        "network": "solana",
        "asset": "USDC",
        "amount": "0.001",
        "payTo": "5xyz...9abc",
        "description": "Weather data - single query"
      }
    ],
    "resource": "/weather",
    "scheme": "exact"
  }
}

关键设计点:

  1. 多链支持accepts 数组可以列出多个链和币种选项,客户端选择自己方便的
  2. 金额明确:精确到链上的最小单位
  3. 收款地址透明:直接指定链上地址,没有中间商
  4. 资源绑定:明确标注这笔支付对应哪个资源

3.3 支付凭证的传递

客户端完成链上支付后,在重试请求中通过 HTTP Header 携带支付凭证:

GET /weather?city=beijing HTTP/1.1
X-402-Payment: {"network":"base","txHash":"0xabc...123","asset":"USDC","amount":"0.001"}

服务端验证交易哈希的有效性(确认链上转账已完成),然后返回数据。


四、服务端集成:一行代码

4.1 极简中间件模式

x402 最吸引开发者的特性之一是极其简洁的服务端集成。以 Node.js 为例:

import express from 'express';
import { paymentMiddleware } from '@x402/middleware';

const app = express();

// 一行代码为路由添加付费墙
app.use(paymentMiddleware({
  "GET /weather": {
    accepts: [
      { network: "base", asset: "USDC", amount: "0.001" },
      { network: "solana", asset: "USDC", amount: "0.001" }
    ],
    description: "Weather data query"
  },
  "GET /premium-analysis": {
    accepts: [
      { network: "base", asset: "USDC", amount: "0.05" }
    ],
    description: "Premium market analysis report"
  }
}));

// 正常的业务逻辑,无需修改
app.get('/weather', (req, res) => {
  res.json({ city: "beijing", temp: "22°C", condition: "sunny" });
});

app.get('/premium-analysis', (req, res) => {
  res.json({ analysis: "..." });
});

app.listen(3000);

开发者只需要做一件事:在路由配置中声明"这个接口要收多少钱"。 支付验证、402 响应生成、凭证校验全部由中间件自动处理。

4.2 客户端集成

对于 AI Agent 或自动化客户端:

import { x402Client } from '@x402/client';

const client = new x402Client({
  wallet: myWallet, // 链上钱包
  preferredNetwork: 'base'
});

// 自动处理 402 流程:请求 → 收到 402 → 支付 → 重试
const weatherData = await client.fetch('https://api.example.com/weather?city=beijing');
console.log(weatherData);
// 输出:{ city: "beijing", temp: "22°C", condition: "sunny" }

对于 AI Agent 而言,x402 是完全透明的: Agent 只需要正常发起 HTTP 请求,x402 客户端库自动处理支付流程。Agent 甚至不需要"知道"它在付费——一切都内嵌在 HTTP 交互中。


五、V1 到 V2:从 API 付费到互联网支付层

5.1 V1 的局限

x402 V1(2025 年 5 月)实现了基本的"402 支付循环",但存在几个明显的局限:

局限 具体表现
单一调用模式 只支持"一次请求一次支付",不支持订阅和批量
单链支持 每次部署只能支持一条链
无会话管理 每次请求都需要重新验证,高频场景效率低
架构耦合 协议、SDK 和支付服务商的代码混在一起

5.2 V2 的关键升级

2025 年 12 月,x402 V2 发布,带来了五大升级:

graph TB V2["x402 V2 核心升级"] V2 --> A["<b>模块化架构</b><br/>协议规范 / SDK / 支付服务商<br/>彻底分离,插件驱动"] V2 --> B["<b>统一支付接口</b><br/>跨链支持(Base, Solana)<br/>+ 传统支付(ACH, 卡网络)"] V2 --> C["<b>会话复用</b><br/>可重复使用的钱包会话<br/>消除高频支付的重复验证"] V2 --> D["<b>动态路由</b><br/>根据请求动态定价<br/>支持多租户和市场平台"] V2 --> E["<b>生命周期钩子</b><br/>支付前/后插入自定义逻辑<br/>条件路由、故障恢复、监控"] style V2 fill:#fff,stroke:#333,stroke-width:2px,color:#333 style A fill:#fff,stroke:#333,stroke-width:1px,color:#333 style B fill:#fff,stroke:#333,stroke-width:1px,color:#333 style C fill:#fff,stroke:#333,stroke-width:1px,color:#333 style D fill:#fff,stroke:#333,stroke-width:1px,color:#333 style E fill:#fff,stroke:#333,stroke-width:1px,color:#333

升级一:模块化架构

V2 将整个系统拆分为三层:

┌──────────────────────────────────────────┐
│          协议规范(Protocol Spec)          │
│     定义 402 响应格式、支付凭证格式等        │
├──────────────────────────────────────────┤
│          SDK 实现(多语言)                 │
│   TypeScript / Rust / 更多语言支持         │
├──────────────────────────────────────────┤
│          支付服务商(Providers)            │
│   Base / Solana / ACH / 卡网络(可插拔)    │
└──────────────────────────────────────────┘

好处: 添加一条新的区块链支持,只需要开发一个新的 Provider 插件,不需要改动协议规范或 SDK——真正的"即插即用"。

升级二:会话复用

V1 的每次请求都需要独立完成一轮支付验证。对于 AI Agent 高频调用 API 的场景(每秒数十次),这带来了巨大的开销。

V2 引入了钱包会话(Wallet Session)机制:

首次请求:完整的 402 支付流程
    ↓ 建立会话
后续请求:复用会话,跳过支付验证
    ↓ 会话内请求按预授权额度扣费
会话到期:重新建立

这对 AI Agent 至关重要: Agent 与某个 API 建立会话后,后续的调用几乎是零延迟的——支付完全嵌入了 HTTP 流程,Agent 感知不到任何中断。

升级三:动态路由与定价

V2 支持根据请求参数动态计算价格和路由目标:

app.use(paymentMiddleware({
  "GET /translate": {
    accepts: [{ network: "base", asset: "USDC" }],
    // 动态定价:根据文本长度计费
    pricing: (req) => ({
      amount: Math.ceil(req.query.text.length / 100) * 0.001
    }),
    // 动态路由:多租户场景
    payTo: (req) => getProviderAddress(req.query.provider)
  }
}));

升级四:生命周期钩子

V2 在支付流程的关键节点提供了钩子,开发者可以插入自定义逻辑:

钩子 触发时机 典型用途
beforePayment 支付发送前 条件验证、反欺诈检查
afterPayment 支付发送后 记录日志、触发后续流程
beforeSettlement 结算验证前 自定义验证逻辑
afterSettlement 结算验证后 指标监控、故障恢复

六、x402 vs 传统支付 vs AP2

6.1 三方对比

维度 传统支付(Stripe 等) AP2 x402
注册要求 需要商家注册 + 用户绑卡 需要多方角色注册 无需注册
支付方式 信用卡、银行转账 信用卡、银行转账、稳定币 链上稳定币
最小交易金额 ~$0.50(受手续费限制) | 中大额为主 | $0.001 起
结算速度 T+1 ~ T+3 依赖支付网络 即时
手续费 2~3% + $0.30/笔 依赖支付网络 链上 gas 费(<$0.01)
适合场景 电商、订阅 Agent 代人购物 API 微支付、Agent 间交易
开发者集成 SDK + 控制台配置 多角色对接 一行中间件代码
用户体验 输入卡号 → 付款 签署 VDC 凭证 完全透明(自动 402 流程)

6.2 AP2 与 x402:互补而非竞争

AP2 和 x402 面向完全不同的支付场景,互补关系清晰:

┌─────────────────────────────────────────────────────────┐
│                     AI Agent 支付场景                     │
├───────────────────────┬─────────────────────────────────┤
│    AP2 的领地           │          x402 的领地              │
│                       │                                 │
│  • 代人在电商购物       │  • Agent 调用付费 API             │
│  • 订阅 SaaS 服务      │  • Agent 间按次购买推理能力        │
│  • 大额消费授权         │  • 内容微支付(按篇/按段)         │
│  • 需要用户明确授权     │  • 自动化微交易($0.001级别)      │
│  • 需要争议解决机制     │  • 无需人工介入的机器间交易        │
│                       │                                 │
│  支付方式:信用卡/银行   │  支付方式:链上稳定币              │
│  信任机制:VDC 签名     │  信任机制:链上验证               │
│  结算:依赖支付网络     │  结算:即时链上结算               │
└───────────────────────┴─────────────────────────────────┘

一个混合场景的例子:

你的 Agent 要帮你规划旅行:

  1. [A2A] 你的 Agent 与航空公司 Agent、酒店 Agent 通信
  2. [x402] 你的 Agent 调用天气预报 API($0.002/次)和目的地评分 API($0.005/次)
  3. [AP2] 确定方案后,Agent 用你的信用卡预订机票($800)和酒店($500)

x402 处理"小额高频",AP2 处理"大额授权"——两者共同覆盖了 Agent 支付的全场景。


七、生态现状与数据

7.1 关键数据

指标 数值
累计交易笔数 1 亿+
累计交易金额 $2,400 万+
买方数量 ~9.4 万
卖方数量 ~2.2 万
GitHub Stars 5,300+

7.2 技术实现

实现 语言 说明
官方实现 TypeScript Coinbase 维护,最完整的 SDK
社区实现 Rust x402-rs,支持 V1 和 V2
中间件 Node.js Express/Koa 中间件

7.3 支持的网络

网络 结算速度 Gas 费用
Base(Coinbase L2) ~2 秒 <$0.01
Solana ~0.4 秒 <$0.01
更多网络 通过 V2 Provider 插件扩展 -

八、开发者快速入门

8.1 5 分钟搭建一个 x402 付费 API

Step 1:安装依赖

npm install express @x402/middleware

Step 2:创建服务

import express from 'express';
import { paymentMiddleware } from '@x402/middleware';

const app = express();

app.use(paymentMiddleware({
  "GET /joke": {
    accepts: [
      { network: "base", asset: "USDC", amount: "0.001" }
    ],
    description: "Get a random programming joke"
  }
}));

app.get('/joke', (req, res) => {
  const jokes = [
    "Why do programmers prefer dark mode? Because light attracts bugs.",
    "There are 10 types of people: those who understand binary and those who don't.",
  ];
  res.json({ joke: jokes[Math.floor(Math.random() * jokes.length)] });
});

app.listen(3000, () => console.log('x402 API running on port 3000'));

Step 3:测试

# 不带支付凭证,收到 402
curl http://localhost:3000/joke
# 返回:HTTP 402 { "x402": { "accepts": [...] } }

# 带支付凭证,获取数据
curl http://localhost:3000/joke \
  -H 'X-402-Payment: {"network":"base","txHash":"0x...","asset":"USDC","amount":"0.001"}'
# 返回:HTTP 200 { "joke": "..." }

九、写在最后

x402 的魅力在于它的简洁。

在 AP2 用复杂的角色分离和加密凭证来解决"Agent 代人花钱"的信任问题时,x402 选择了一条完全不同的路径:不需要信任——链上验证就是一切。

你不需要注册账户,不需要签署授权,不需要信任任何中间方。你只需要发送一笔链上转账,交易哈希就是你的"通行证"。这种极简主义让 x402 成为了机器对机器交易的最佳选择——AI Agent 不需要理解复杂的授权流程,它只需要一个钱包和一个 HTTP 客户端。

当然,x402 的适用边界也很清晰:它不适合大额消费(缺乏消费者保护和争议解决),不适合需要用户明确授权的场景(没有 VDC 那样的意图证明机制)。这正是 AP2 和 x402 互补的原因:AP2 管"大事",x402 管"小事"。

回到开头的那个故事:HTTP 402 等了 28 年,终于等到了属于它的时代。而这个时代的关键词不是"在线购物",而是 AI Agent 经济——数十亿个 Agent 每天进行数万亿次微交易,每一次交易都像访问网页一样自然。

x402 就是为这个未来而生的协议。


关注公众号「coft」,获取更多 AI 时代的深度洞察和技术实战干货。

posted @ 2026-02-24 11:29  warm3snow  阅读(3)  评论(0)    收藏  举报