什么是X402协议,主要用在什么场景
Coinbase的x402协议创新性地将加密支付融入HTTP协议,利用预留的402状态码实现链上即时支付。该协议通过标准HTTP交互完成支付流程,无需用户注册或第三方支付工具,支持一次性付费、订阅制和微支付等多种场景。开发者可使用官方SDK快速集成,由Coinbase提供验证节点支持。x402协议为互联网内容付费、API服务和AI应用提供了原生Web3支付解决方案,具有无账号体系、自动执行等特点。
Coinbase 的 x402 协议 其实是一次极具前瞻性的尝试——它把“互联网原生加密支付”直接融入了 HTTP 协议本身,让任何网站、API 或 AI 服务都可以“即调即付”,不再需要用户注册、信用卡或第三方支付 SDK。
下面我会分成四部分详细讲解:
⸻
一、x402 协议原理详解
- 背景与核心思想
HTTP 协议在设计时预留了一个从未被正式使用的状态码:
402 Payment Required
x402 的核心创新,就是让这个状态码真正“活”起来,并定义了一套标准字段、加密签名和结算流程,用于实现链上支付。
👉 也就是说,当客户端请求一个资源(网页、API、内容)时,服务器可以说:“要先付点钱我才给你看。”
⸻
- 工作流程(协议级别)
(1) 客户请求资源
GET /premium-article/42 HTTP/1.1
Host: example.com
Accept: application/json
(2) 服务器要求付款
服务器发现这是收费内容,就返回:
HTTP/1.1 402 Payment Required
Content-Type: application/x402+json
{
"version": "1.0",
"price": {
"amount": "1.00",
"currency": "USDC",
"chain": "base"
},
"receiver": "0xabc123...def",
"nonce": "e03a9d",
"description": "Access to premium article #42",
"callback_url": "https://example.com/x402/verify"
}
这告诉客户端:
• 需要支付 1 USDC
• 支付到 Base 链上指定的接收地址
• 支付完成后调用 callback_url 通知验证
⸻
(3) 客户端执行支付
客户端钱包或 SDK 在链上发送交易,然后生成一个 x402 支付凭证(包含 tx hash、签名等):
{
"tx_hash": "0x0ae1...",
"payer": "0x9876...",
"signature": "0xabcd...",
"amount": "1.00",
"currency": "USDC"
}
客户端随后重新发起请求:
GET /premium-article/42 HTTP/1.1
Host: example.com
X-Payment: <base64-encoded-payment-payload>
⸻
(4) 服务器验证支付
服务器收到 X-Payment 头后:
• 验证签名
• 检查链上交易是否成功
• 核对金额、接收地址
验证通过后返回:
HTTP/1.1 200 OK
X-Payment-Response: {"status":"confirmed","tx_hash":"0x0ae1..."}
Content-Type: text/html
<h1>Here is your premium content!</h1>
至此,整个支付链闭环完成。
整个流程中:
• 没有跳转到第三方网页;
• 没有输入信用卡;
• 一切都是标准 HTTP 交互。
⸻
二、x402 协议的结构定义

⸻
三、在网站中实现订阅支付
假设你要做一个类似 “Medium 会员内容” 或 “AI 服务订阅” 的网站,用 x402 实现如下:
⸻
- 你的系统架构
[用户浏览器]
↓ (HTTP请求)
[前端网站 + 钱包集成JS SDK]
↓ (支付请求)
[后端API服务器 with x402中间件]
↕
[Coinbase facilitator / Base链节点]
⸻
- 订阅支付逻辑设计
方案 A:一次性访问付费(按次购买)
1. 用户点击“阅读全文”;
2. 浏览器发请求;
3. 服务器返回 402;
4. 钱包 SDK 自动弹窗、完成链上支付;
5. 钱包在成功后携 X-Payment 重新请求资源;
6. 服务端验证支付成功,返回完整内容。
✅ 优点:无登录、无账号体系、真正的 Web3 原生体验。
⚠️ 缺点:链上确认时间稍长(取决于链),每次都需支付 gas。
⸻
方案 B:周期订阅(会员制)
1. 用户购买会员时触发 x402 支付请求;
2. 成功后服务器将 wallet address 与订阅状态存入数据库;
3. 后续访问会员内容时,后端查询状态无需再发 402。
实现逻辑:
# Flask / FastAPI示意
@app.route("/premium/<article_id>")
def premium(article_id):
wallet = get_wallet_from_header()
if not is_subscribed(wallet):
return make_x402_response(price="10.00", period="30d")
return render_article(article_id)
定期检查 subscription 是否过期,也可以要求用户再走一次 x402 支付流程续费。
⸻
方案 C:AI 接口/微支付
适用于 API 调用或 AI 服务:
• 每 1 次 API 调用 = 0.01 USDC
• 调用者的钱包通过 x402 自动付费
• 实现“每次调用即付费”
⸻
四、技术落地与工具
- 官方 SDK 与中间件
Coinbase 已提供开源 SDK:
• Node.js / TypeScript
npm install @coinbase/x402
• Python
(即将推出,可自行封装验证逻辑)
SDK 示例(Node):
import { x402Middleware } from "@coinbase/x402";
app.use(
"/premium",
x402Middleware({
price: { amount: "1.00", currency: "USDC", chain: "base" },
receiver: "0xabc123...",
})
);
⸻
- 钱包支持
• Coinbase Wallet(原生支持)
• 任何 EVM 兼容钱包都可用
• 支付方式通常为 USDC 稳定币
⸻
- 验证节点(facilitator)
开发者不需要直接跑区块链节点,可以使用:
• Coinbase CDP Facilitator API
负责代查交易状态、签名验证。
• 或者自建验证逻辑:
• 用 Ethers.js / Web3.py 查 tx receipt;
• 校验金额与收款方。
⸻
五、总结
⸻
✳️ 示例应用灵感

更多推荐

所有评论(0)