AI Agent 支付标准:Machine Payments Protocol 协议解析与生态现状
2026-06-2414:00
Beosin
2026-06-24 14:00
Beosin
2026-06-24 14:00
收藏文章
订阅专栏

随着 AI Agent 和自动化客户端自主执行任务的需求爆发,机器与机器之间如何在没有人类干预的情况下完成支付,正成为一个亟待解决的基础设施问题。传统的支付接口难以适应高频、动态、跨平台的机器间交易场景。

 

为此,Stripe 与 Tempo 联合推出了专为机器间支付设计的开放协议 Machine Payments Protocol(MPP),旨在让客户端和服务端在自动化流程中,无缝完成价格协商、支付方式选择、凭证提交与交易结算。本文将从 MPP 协议机制、与 x402 的对比、生态现状三个维度,解析 MPP 的协议设计与现实进展。

 

MPP 协议解析

MPP 借用了 HTTP 里开发者已经熟悉的 challenge-response 结构,把支付自然嵌进网络请求的生命周期里,通过 Stripe 的支付渠道或 Tempo 等区块链完成交易。整个流程遵循一种基于标准 HTTP headers 的挑战 - 响应模式:

 

1. 客户端向付费 endpoint 发送一个普通 HTTP 请求(如 GET)。

2. 服务器返回一个支付挑战(challenge):402 Payment Required 和 WWW-Authenticate: Payment 标头。该标头告诉客户端当前支持接受的货币、价格、收款地址以及可用的支付方式。

3. 客户端选择一种支付方式并完成支付(稳定币转账、银行卡支付等)。

4. 客户端重新发送原始请求,并带上 Authorization: Payment 标头的支付凭证(credential)

5. 服务器验证支付并返回带有 Payment-Receipt 标头的响应。

 

https://mpp.dev/protocol

 

整个流程中有两个重要概念:支付挑战与支付凭证。支付挑战是服务器发出的具体支付要求,其内容结构如下所示:

 

WWW-Authenticate: Payment id="qB3wErTyU7iOpAsD9fGhJk",    realm="mpp.dev",    method="tempo",    intent="charge",    expires="2025-01-15T12:05:00Z",    opaque="eyJyb3V0ZSI6Ii92MS9zZWFyY2gifQ",    request="eyJhbW91bnQiOiIxMDAwIiwiY3VycmVuY3kiOiJ1c2QifQ"

 

intent 参数目前分为 charge、subscription、session 三类,以 Tempo 区块链为例:

 

 

 

request 参数是 base64url 编码的 JSON 字符串,由客户端解码获得支付方式的详细信息,如

 

{  "amount": "1000",  "currency": "usd",  "recipient": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"}

 

支付凭证用于证明您已付款或授权付款,其内容也是 base64url 编码的 JSON 字符串:

 

Authorization: Payment eyJjaGFsbGVuZ2UiOnsiaWQiOiJxQjN3RXJUeVU3aU9wQXNEOWZHaEprIiwi...

 

解码后内容包含原来的支付挑战、特定的付款方式和付款证明、付款人身份信息(地址、DID、账户 ID)。

{  "challenge": {    "expires": "2025-01-15T12:05:00Z",    "id": "qB3wErTyU7iOpAsD9fGhJk",    "intent": "charge",    "method": "tempo",    "opaque": "eyJyb3V0ZSI6Ii92MS9zZWFyY2gifQ",    "realm": "mpp.dev",    "request": "eyJhbW91bnQiOiIxMDAwIi4uLn0",  },  "payload": {    "signature": "0xabc123...",    "type": "transaction"  },  "source": "did:pkh:eip155:4217:0x1234567890abcdef..."}

 

以 MPP 的 TypeScript SDK 为例,其具体实践如下:

 

服务器部分

 

1. 创建处理支付请求的服务器端点

import crypto from 'crypto';import Stripe from 'stripe';// 'stripe' here is the mppx payment method factory, not the Stripe Node SDKimport { Mppx, stripe as mppStripe, tempo } from 'mppx/server'; // Tempo testnet token contract address for pathUSD (testnet USDC).const PATH_USD = '0x20c0000000000000000000000000000000000000'; // Secret used to secure payment challenges// https://mpp.dev/protocol/challenges#challenge-bindingconst mppSecretKey = crypto.randomBytes(32).toString('base64');const stripeClient = new Stripe(process.env.STRIPE_SECRET_KEY!, {  apiVersion: '2026-03-04.preview',}); export async function handler(request: Request) {  const recipientAddress = await createPayToAddress(request);   const mppx = Mppx.create({    methods: [      tempo.charge({        currency: PATH_USD,        recipient: recipientAddress,        testnet: true,      }),      mppStripe.charge({

 

2. 创建一个支付意图(PaymentIntent)用于接收稳定币 / 加密货币支付,当客户端发起请求后,createPayToAddress 会返回一个加密货币存款地址,客户端将收到该地址并用于支付。

import Stripe from 'stripe';import { Credential } from 'mppx';import NodeCache from 'node-cache'; // In-memory cache for deposit addresses (TTL: 5 minutes)// NOTE: For production, use a distributed cache like Redis instead of node-cacheconst paymentCache = new NodeCache({ stdTTL: 300, checkperiod: 60 }); async function createPayToAddress(request: Request): Promise<`0x${string}`> {  const authHeader = request.headers.get('authorization');  if (authHeader && Credential.extractPaymentScheme(authHeader)) {    const credential = Credential.fromRequest(request);    const toAddress = credential.challenge.request.recipient as `0x${string}`;     if (!toAddress) {      throw new Error(        'PaymentIntent did not return expected crypto deposit details'      );    }    if (!paymentCache.has(toAddress)) {      throw new Error('Invalid payTo address: not found in server cache');    }    return toAddress;

 

客户端部分

 

创建 Tempo/ 其它用于付款的账户

import { Mppx, tempo } from 'mppx/client' const provider = Provider.create({ mpp: false }) // Avoid double 402 handling; mppx is configured below.await provider.request({ method: 'wallet_connect' })

 

在此基础上,创建支付处理程序

 

import { Provider } from 'accounts' Mppx.create({  methods: [tempo({    account: provider.getAccount({ signable: true }),    getClient: provider.getClient,  })],})

 

使用 fetch 请求资源

 

const response = await fetch('https://mpp.dev/api/ping/paid')

 

MPP 与 x402 的差异

2025 年 5 月 Coinbase 推出了 x402 协议,利用 402 Payment Required 实现了稳定币支付协议,其流程与 MPP 非常类似:客户端请求资源 ->服务器返回带有支付头的 HTTP 402->客户端签署一个 Stablecoin 转账并带着支付签名重试 ->Facilitator 在链上验证结算 ->服务器返回 HTTP 200。

 

x402 协议对于稳定币支付来说是突破性的,协议非常简洁,开发者可以快速接入。但 x402 没有法定货币支付的渠道,企业级 Agent 无法通过 x402 协议使用公司信用卡支付各类 API 的费用。而 Stripe 通过 MPP 协议填补了以上法币通道的空白,其支付方式已包括 Tempo、EVM、Solana、Stellar、Lightning、Stripe、银行卡,并且针对不同场景设计了不同的支付规范:Charge、Session、Discovery、JSON-RPC/MCP transport。概括地说,x402 是互联网的链上稳定币支付标准,MPP 是一个更为通用的 HTTP 支付框架:

 

 

MPP 生态发展现状

根据官方注册表(MPP Service Registry)统计,MPP 共收录 137 个服务(其中一个服务可同时属于多个类别)和 1439 个 endpoint。其中 128 个服务只支持 Tempo 支付, 2 个服务只支持 Stripe 支付, 7 个服务同时支持 Tempo 和 Stripe 支付。

 

* 注:MPP 协议文档支持的支付方法不止这两种,还支持 lightning、evm、card、solana 等支付方式,但这份官方服务注册表当前只收录了 Tempo 与 Stripe 这两类支付服务。

 

从 endpoint 看,注册表里 1261 个 endpoint 标有价格或动态价格,其中 1068 个是固定价格,193 个是动态价格,另有 178 个没有显式价格或可视为免费 / 未定价。固定价格的中位数是 $0.02/request,平均值约 $0.139/request,最高固定价格是 StablePhone 的购买手机号 endpoint,$20/request。

 

在 intent 的使用上:129 个服务使用 charge,8 个服务使用 session。session 服务包括 Anthropic、Dune、Google Gemini、Modal、OpenRouter、Alchemy、Conduit、Tempo RPC 这类高频、多次调用、用量动态变化的服务里,而普通数据服务更适合一次请求一次 charge。

 

分类上,已注册的服务分布偏向 Agent 可消费的数据与工具 API:

data source: https://raw.githubusercontent.com/tempoxyz/mpp/main/schemas/services.ts

 

第三方数据平台 MPPscan 收录了超过 3700 个 MPP 服务器,根据其统计数据,MPP 总交易笔数超过 110 万,交易量约为 14 万美元,平均每笔交易金额约 0.127 美元。由于 x402 协议相比 MPP 协议早推出约 8 个月,我们只选取过往 30 日 MPP 协议与 x402 协议的数据(未包含 MPP 非区块链支付渠道的数据)进行对比,如下图所示:

 

 

x402 协议在当前阶段的整体采用规模明显高于 MPP 协议,x402 的总交易笔数是 MPP 协议的 10.6 倍,总交易金额是后者的 20.2 倍。从协议定位上,x402 更强调轻量、开放和快速接入,更容易先做大交易规模;而 MPP 更强调多支付方式和支付系统完整性,在当前生态发展和场景验证的初期与 x402 协议存在规模差异。

 

结语

MPP 将支付逻辑深度嵌入 HTTP 请求的生命周期,通过开发者熟悉的挑战 - 响应模式,降低了接入机器支付的门槛。相比 Coinbase 的 x402 协议,MPP 在支付方式上更为多元(覆盖稳定币、银行卡、闪电网络等),在结算模式上支持一次性扣费、会话级按量结算和订阅服务,并借助 Stripe 的法币通道和 Tempo 的链上合规控制,为不同规模的企业级应用提供了更完整的支付框架。

 

未来,MPP 能否成为 AI Agent 经济的通用支付协议,取决于是否有更多服务提供方注册并实际启用多种支付方式。在区块链支付渠道的交易数据,x402 协议目前大幅领先。MPP 虽然通过 Tempo 提供更为完善的支付渠道,但其支付规模和开发者采用率仍需时间验证。

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

专栏文章
查看更多
数据请求中

推荐专栏

数据请求中

一起「遇见」未来

DOWNLOAD FORESIGHT NEWS APP

Download QR Code