# mppx 中文文档

规范地址：https://npmcn.com/package/mppx/

版本：0\.17\.1
npm 元数据更新时间：2026-11-04T03:18:10.952Z
中文译文更新时间：2026-11-04T05:19:35.988Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/mppx
原文对照：https://npmcn.com/package/mppx/?lang=original
项目主页：https://github.com/wevm/mppx#readme
源码仓库：https://github.com/wevm/mppx

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：4.8 MB，503 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：5 个
- peer 依赖：hono \>=4\.12\.25，next \>=16\.2\.6，viem \>=2\.57\.1，elysia \>=1\.2\.0，express \>=5，@x402/mcp \>=2\.22\.0，@x402/core \>=2\.22\.0，@x402/hono \>=2\.22\.0，@x402/next \>=2\.22\.0，@x402/express \>=2\.22\.0，@modelcontextprotocol/sdk \>=1\.25\.0
- 首次发布：2026-02-12T23:38:06.149Z
- 最新版本发布：2026-11-04T03:18:10.513Z
- 已发布版本数：305（近 12 个月 305 个）

## 中文简介

暂无中文简介

## 安装

```sh
npm install mppx
```

也可以使用：`pnpm add mppx`、`yarn add mppx`、`bun add mppx`

## README

![mppx](https://npmcn.com/package/mppx/.github/logo-light.svg)

**的TypeScript SDK [机器支付协议](https://mpp.dev/)**

[文档](https://mpp.dev/sdk/typescript) · [安装](https://npmcn.com/package/mppx/#readme-install) · [快速启动](https://npmcn.com/package/mppx/#readme-quick-start) · [例子](https://npmcn.com/package/mppx/#readme-examples) · [CLI](https://npmcn.com/package/mppx/#readme-cli) · [支付代理](https://npmcn.com/package/mppx/#readme-payments-proxy) · [协议](https://github.com/tempoxyz/mpp-specs)

 [![Version](https://img.shields.io/npm/v/mppx?colorA=f6f8fa&colorB=f6f8fa&style=flat)](https://www.npmjs.com/package/mppx)[![MIT License](https://img.shields.io/npm/l/mppx?colorA=f6f8fa&colorB=f6f8fa&style=flat)](https://github.com/wevm/mppx/blob/main/LICENSE)

* * *

## 文档

完整的文档、API参考和指南可在 **[mpp.dev / sdk /打印稿](https://mpp.dev/sdk/typescript)**。

更改Tempo会话的贡献者应阅读 [会话的设计](https://npmcn.com/package/mppx/src/tempo/session/README.md) 在更改凭证、恢复、会计或传输行为之前。

## 安装

```bash
npm i mppx
```

## 快速启动

### 服务器

```ts
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`。

### 客户端

```ts
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')
```

## 例子

| 例子 | 描述 |
| --- | --- |
| [负责](https://npmcn.com/package/mppx/examples/charge/) | 支付门控照片生成API |
| [charge-wagmi](https://npmcn.com/package/mppx/examples/charge-wagmi/) | 使用Wagmi + React支付收费 |
| [会话/ multi-fetch](https://npmcn.com/package/mppx/examples/session/multi-fetch/) | 多个付费请求在一个单一的支付渠道 |
| [会话/ sse](https://npmcn.com/package/mppx/examples/session/sse/) | 使用SSE按令牌付费的LLM流 |
| [条纹](https://npmcn.com/package/mppx/examples/stripe/) | 条带SPT收费与自动客户端 |

```bash
npx gitpick wevm/mppx/examples/charge
```

## CLI

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

```bash
# 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` 供应。此选项信任服务器选择的地址；客户 那些不支持自定义托管的人应该不设置它。看到 [会话托管信任文档](https://npmcn.com/package/mppx/src/tempo/session/README.md#escrow-configuration-and-trust)。

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

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

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

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

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

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

```bash
npm i -g mppx
```

## 支付代理

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

```ts
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认证方案](https://datatracker.ietf.org/doc/draft-ryan-httpauth-payment/)． 看到 [mpp-specs](https://github.com/tempoxyz/mpp-specs) 获取完整规格。

## 许可证

麻省理工学院

### 可接受的节拍货币

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

```ts
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？

在项目目录运行 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 和提交记录判断。

