## 什么是 SPT？

SPT（Shared Payment Token，共享支付令牌）让 AI 代理可以通过 Stripe 为 API 调用付费 —— 使用真实的银行卡支付而不是加密货币。用户预先授权一个带有消费限额的令牌，代理使用它自主地为服务付费。

## 工作原理

1. 用户通过 Stripe 创建一个带有消费限额（最高金额、币种、过期时间）的 SPT
2. 代理向付费端点发送请求
3. 服务器返回 **HTTP 402** 并附带 `WWW-Authenticate: Payment method="stripe", intent="charge", request="<base64url>"`
4. 代理解码 `request` 字段以获取价格（金额、币种）
5. 代理使用 `Authorization: Payment <credential>` 重试，凭证中包含 SPT
6. 服务器使用该令牌创建一个 Stripe PaymentIntent，验证成功后返回响应

## 关键概念

- **共享支付令牌**：受范围与用途限制的 Stripe 令牌（前缀为 `spt_`），授予代理消费的权限
- **使用限额**：每个令牌都有最高金额、币种和过期时间 —— 用户控制代理可以花多少钱
- **mppx 中间件**：处理 [MPP](/kb/zh/mpp)（Tempo）支付的同一中间件也处理 SPT —— 一个服务器可以同时接受这两种方式
- **多重质询**：402 响应可以包含多个 `WWW-Authenticate: Payment` 头，对应不同方法（tempo、stripe），让代理自行选择如何付款

## 代理如何发现 SPT

SPT 使用两条发现通道：

1. **运行时（权威）**：HTTP 402 响应中 `WWW-Authenticate: Payment` 质询带 `method="stripe"`
2. **请求前（建议性）**：在需要付款的操作上使用 [OpenAPI](/kb/zh/openapi) `x-payment-info` 扩展

402 响应始终是权威的 —— OpenAPI 元数据仅供建议。

## 如何为你的服务添加 SPT

1. 安装 mppx：`npm install mppx`
2. 配置你的 Stripe secret key
3. mppx 中间件会同时返回 Tempo 和 Stripe 方法的 402 质询
4. 拥有 SPT 的代理可通过 Stripe 付款；持有 pathUSD 的代理可通过 Tempo 付款

## 了解更多

- [Stripe SPT 文档](https://docs.stripe.com/agentic-commerce/concepts/shared-payment-tokens) —— 令牌的创建与使用
- [npm 上的 mppx](https://www.npmjs.com/package/mppx) —— 同时支持 MPP 和 SPT 的中间件
- [paymentauth.org](https://paymentauth.org) —— 支付发现规范