(MPP) 机器对机器支付协议
Machine Payments Protocol(MPP)
MPP 是一个机器对机器支付的开放协议,让任何客户端——AI Agent、应用或人类——都能在同一个 HTTP 请求中完成服务付款。
核心设计理念
现有支付流程为人类用户设计(验证码、可视化表单、一键结账),但这些对程序化调用来说是巨大障碍——浏览器自动化管道、验证码、不断变化的支付表单,都导致可靠性低、延迟高、成本高。MPP 专门为程序化访问设计了支付接口,去掉复杂的结账流程,同时保持安全性和可靠性。
支付流程(5步)
- Client 请求资源 —
GET /resource - Server 返回支付挑战 —
402 Payment Required,附带WWW-Authenticate: Payment头 - Client 完成支付 — 签名交易、支付发票或完成卡支付
- Client 携带凭证重试 —
GET /resource,附带Authorization: Payment头 - Server 验证并返回资源 —
200 OK,附带Payment-Receipt头
Agent 使用方式
Agent 可以自动与 MPP 服务交互,无需人工干预即可为 API 调用付费。目前支持四种工具:
| 工具 | 适用场景 |
|---|---|
| Tempo Wallet | 推荐方案,内置消费控制和服务发现 |
| Privy Agent CLI | 多链钱包,浏览器端充值 |
| AgentCash | 一个余额访问 300+ 高级 API |
| mppx CLI | 开发调试用 |
协议特点
- 开放标准 — 基于向 IETF 提交的开放规范,非私有 API
- 支付原生设计 — 幂等性、安全性、收据是一等公民
- 多支付方式 — 稳定币、信用卡、银行转账,一个协议全支持
- 任意货币 — USD、EUR、USDC.e、BTC 等均可
- 可组合扩展 — 支持争议处理、身份验证等高级流程
与 x402 的关系
MPP 还提供了 x402 迁移指南(Upgrade your x402 integration),说明 MPP 是 x402 概念的标准化演进版本,覆盖更多支付场景,并有正式的 IETF 规范支撑。
------

核心原理
MPP 本质是对 HTTP 标准的扩展,把"支付"变成一次普通 HTTP 请求的一部分:
服务端用 WWW-Authenticate: Payment 头描述支付要求,客户端用 Authorization: Payment 头提交支付证明,服务端验证后用 Payment-Receipt 头附上收据返回资源。整个流程完全在 HTTP 层完成,无需跳转、无需 webhook。
角色一:你想做服务方(API 收费)
安装 SDK:
npm install mppx
在 Next.js 中接入(最简方式):
import { Mppx, tempo } from 'mppx/nextjs'
const mppx = Mppx.create({
methods: [tempo({
currency: '0x20c0...', // USDC.e 合约地址
recipient: '0xYourWalletAddress',
})],
})
// 这个路由每次请求收 $0.1
export const GET =
mppx.charge({ amount: '0.1' })
(() => Response.json({ data: 'your data here' }))
服务端还支持"发现"机制——通过 discovery() 自动生成 /openapi.json,让 AI Agent 能自动发现你的 API 及其定价。
测试你的服务端:
npx mppx account create # 创建测试账户(含测试币)
npx mppx https://yourapi.com/resource # 模拟付款请求
npx mppx --inspect https://yourapi.com/resource # 只看 Challenge 不付款
角色二:你想做消费方(Agent 自动付费)
最简单的方式是用 Tempo Wallet CLI:
tempo wallet login
# 之后你的 Agent 直接调用 MPP 服务,钱包自动处理 402 流程
或者用 mppx 代码集成:
import { createMppxClient } from 'mppx'
const client = createMppxClient({ /* wallet config */ })
const res = await client.fetch('https://some-mpp-api.com/data')
// 自动处理 402 → 签名 → 重试,你不需要写任何支付逻辑
支付方式选择
任何人都可以定义新的支付方式,协议要求每种方式定义 request schema(服务端要求什么)和 payload schema(客户端提交什么证明)。目前生产可用的有:
| 方式 | 适合场景 |
|---|---|
| Tempo(稳定币) | Agent 自动支付,链上结算 |
| Stripe(信用卡) | 面向普通用户的应用 |
| Lightning(BTC) | 比特币微支付 |
安全要点
TLS 1.2+ 是强制要求;每个支付证明只能使用一次(防重放);服务端在验证支付前不得执行任何副作用(数据库写入等);Payment Credential 属于敏感 bearer token,绝不能写入日志。
你是打算做服务方(给自己的 API 加收费)还是消费方(让 Agent 自动付费调用别人的服务)?我可以针对你的具体场景给出更详细的代码指引。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)