x402 支付协议是一种基于 HTTP 的链无关支付标准,利用现有的 402 Payment Required HTTP 状态码来指示资源访问需要付款。它旨在为客户端和服务器提供无需许可、安全、无 gas 费用的支付体验,并且集成简单。
基础概念
- 资源:任何接受 HTTP/HTTPS 请求的网络资源,如网页、文件服务器、API 等。
- 客户端:想要为资源付款的实体。
- 资源服务器:提供 API 或其他资源的 HTTP 服务器。
- 促进服务器:帮助验证和执行链上支付的服务器。
x402 协议的主要特点
- 无需许可:客户端和服务器无需许可即可使用。
- 无 gas 费用:客户端和资源服务器无需支付 gas 费用。
- 简单集成:资源服务器只需一行代码,客户端只需一个函数。
- 可扩展:支持不同支付流程和区块链。
x402 协议流程
- 客户端请求资源:客户端向资源服务器发送 HTTP 请求。
- 资源服务器响应:资源服务器返回 402 Payment Required 状态码和 Payment Required Response JSON 对象。
- 客户端选择支付方式:客户端从响应中选择一个支付方式,创建 Payment Payload。
- 客户端发送支付请求:客户端在 X-PAYMENT 头中包含 Payment Payload 发送请求。
- 资源服务器验证支付:资源服务器验证支付有效性,可能通过促进服务器。
- 促进服务器处理支付:促进服务器验证并在区块链上结算支付。
- 资源服务器返回资源:如果支付成功,资源服务器返回资源和 X-PAYMENT-RESPONSE 头。
示例代码
javascript
// 使用 paymentMiddleware 接受数字美元
app.use(
"/your-endpoint",
paymentMiddleware("$0.10", "0x209693Bc6afc0C5328bA36FaF03C514EF312287C")
);
支付方案(Schemes)
- exact 方案:转移固定金额,例如支付 1 美元阅读文章。
- upto 方案:根据资源使用情况转移最多固定金额,例如生成 LLM 令牌。
运行示例
- 克隆示例仓库。
- 安装依赖。
- 分别运行促进服务器、资源服务器和客户端。
bash
cd example
npm install
npm run facilitator
npm run resource
npm run client
测试
- 安装依赖。
- 创建
.env
文件并配置。 - 运行测试。
bash
cd packages/typescript
npm install
npm run test