mppx

中文文档
0.17.1发布于 2026/11/04MITTypeScriptES Module构建来源已验证
中文使用文档
文档目录11 节
  1. 文档
  2. 安装
  3. 快速启动
  4. 服务器
  5. 客户端
  6. 例子
  7. CLI
  8. 支付代理
  9. 协议
  10. 许可证
  11. 可接受的节拍货币
mppx

的TypeScript SDK 机器支付协议

文档 · 安装 · 快速启动 · 例子 · CLI · 支付代理 · 协议

Version MIT License


文档

完整的文档、API参考和指南可在 mpp.dev / sdk /打印稿。

更改Tempo会话的贡献者应阅读 会话的设计 在更改凭证、恢复、会计或传输行为之前。

安装

npm i mppx

快速启动

服务器

import { Mppx, tempo } from 'mppx/server'

const mppx = Mppx.create({
  methods: [
    tempo({
      recipient: '0x742d35Cc6634c0532925a3b844bC9e7595F8fE00',
    }),
  ],
  secretKey: process.env.MPP_SECRET_KEY!,
})

export async function handler(request: Request) {
  const response = await mppx.charge({ amount: '1' })(request)

  if (response.status === 402) return response.challenge

  return response.withReceipt(Response.json({ data: '...' }))
}

生成 MPP_SECRET_KEY 至少32字节,例如: openssl rand -base64 32。

客户端

import { Mppx, tempo } from 'mppx/client'
import { privateKeyToAccount } from 'viem/accounts'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

// Global fetch now handles 402 automatically
const res = await fetch('https://mpp.dev/api/ping/paid')

例子

例子描述
负责支付门控照片生成API
charge-wagmi使用Wagmi + React支付收费
会话/ multi-fetch多个付费请求在一个单一的支付渠道
会话/ sse使用SSE按令牌付费的LLM流
条纹条带SPT收费与自动客户端
npx gitpick wevm/mppx/examples/charge

CLI

mppx 包括一个基本的CLI,用于发出带有自动支付处理的HTTP请求。节奏 会话通道会被自动保留和重用,直到您关闭它们。

# create account - stored in keychain, autofunded on testnet
mppx account create

# make request - automatic payment handling, curl-like api
mppx example.com

# pay an x402 offer on a server that advertises both protocols
mppx example.com --protocol x402

# open another session instead of reusing the preferred channel
mppx example.com --session new

# inspect and close retained sessions
mppx sessions list
mppx sessions view <channel-id>
mppx sessions close <channel-id>
mppx sessions close --all --yes

# explicitly trust a custom session escrow advertised by the server
mppx example.com -M allowCustomEscrow=true

--session auto 是默认值。通过 new 打开另一个通道或通道ID选择一个 明确。

默认情况下,Tempo会话客户端只接受规范的托管契约。服务器可以发布广告 它在支付挑战中配置了自定义托管,但客户端拒绝它,除非 -M allowCustomEscrow=true 供应。此选项信任服务器选择的地址;客户 那些不支持自定义托管的人应该不设置它。看到 会话托管信任文档。

--protocol auto 为默认值:可用时首选MPP,否则使用x402。 通过 mpp 或 x402 需要一个协议。x402付款使用与EVM相同的EVM帐户 费用,所以 MPPX_PRIVATE_KEY 或者一个存储帐户对两者都适用。

付款延期可以在挑战选择和确认后执行政策或准备资金。 在创建凭据之前:

import { defineConfig, Extension } from 'mppx/cli'

export default defineConfig({
  extensions: [
    Extension.from({
      async preparePayment({ challenge }) {
        await prepareFunds(challenge)
      },
    }),
  ],
})

扩展按配置顺序运行。在Mppx签字之前,throw拒绝付款。

也可以全局安装以使用 mppx 来自任何地方的CLI:

npm i -g mppx

支付代理

mppx 出口 Proxy 服务器处理程序,以便您可以为任何API创建或定义受402保护的支付代理。

import { openai, stripe, Proxy } from 'mppx/proxy'
import { Mppx, tempo } from 'mppx/server'

const mppx = Mppx.create({
  methods: [tempo()],
  secretKey: process.env.MPP_SECRET_KEY!,
})

const proxy = Proxy.create({
  services: [
    openai({
      apiKey: 'sk-...',
      routes: {
        'POST /v1/chat/completions': mppx.charge({ amount: '0.05' }),
        'POST /v1/completions': mppx.tempo.session({
          amount: '0.0001',
          unitType: 'token',
        }),
        'GET /v1/models': true,
      },
    }),
    stripe({
      apiKey: 'sk-...',
      routes: {
        'POST /v1/charges': mppx.charge({ amount: '0.01' }),
        'GET /v1/customers/:id': true,
      },
    }),
  ],
})

createServer(proxy.listener) // Node.js
Bun.serve(proxy) // Bun
Deno.serve(proxy.fetch) // Deno
app.use(proxy.listener) // Express
app.all('*', (c) => proxy.fetch(c.req.raw)) // Hono
app.all('*', (c) => proxy.fetch(c.request)) // Elysia
export const GET = proxy.fetch // Next.js
export const POST = proxy.fetch // Next.js

这暴露了以下路由:

路线定价
POST /openai/v1/chat/completions负责 0.005美元
POST /openai/v1/completions会话 每个代币0.0001美元
GET /openai/v1/models免费的
POST /stripe/v1/charges负责 0.01美元
GET /stripe/v1/customers/:id免费的

协议

建立在 “支付”HTTP认证方案. 看到 mpp-specs 获取完整规格。

许可证

麻省理工学院

可接受的节拍货币

tempo(), tempo.charge(), tempo.session(), tempo.subscription() 首先提供usd,然后是USDC。在主网上或在中速网上(testnet: true). 每个工厂返回一个直接接受的组 Mppx.create. 客户选择一个报价;排序不会触发自动交换。

import { Mppx, tempo } from 'mppx/server'
import { ousd, usdce } from 'viem/tokens'

const mppx = Mppx.create({
  methods: [
    tempo.charge({
      currencies: [ousd, usdce],
      recipient: '0x742d35Cc6634c0532925a3b844bC9e7595F8fE00',
    }),
  ],
})

省略 currencies 对于网络默认设置,还是使用 currencies: [ousd] 在主网只接受美元。显式列表替换默认值。弃用的 currency 选项还将接受限制为一个令牌。连接请求和处理程序覆盖继续使用单数 currency。

使用已配置的处理程序,例如 mppx.tempo.charge 当组成付款时。直接检查Method的代码可以解构该组: const [charge] = tempo.charge({ currencies: [ousd] }). 现有会话和订阅继续使用其最初授权的货币。

版本与发布记录

mppx 共发布 305 个版本,首次发布于 2026/02/13;过去 12 个月发布了 305 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.17.1latest2026/11/04今天
0.0.0-main-20261104022639main2026/11/04今天
0.0.0-main-202611031718532026/11/041 天前
0.0.0-main-202611030136142026/11/031 天前
0.0.0-main-202611022248492026/11/032 天前
0.0.0-main-202611022106472026/11/032 天前

关于 mppx 的常见问题

如何安装 mppx?

在项目目录运行 npm install mppx,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:viem(>=2.57.1)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 mppx,可以用 npx mppx 直接运行。

mppx 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

mppx 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

mppx 可以商用吗?

mppx 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

mppx 还在维护吗?

最新版本 0.17.1 发布于 2026/11/04(今天);至今共发布 305 个版本,其中过去 12 个月发布了 305 个;首次发布于 2026/02/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。