## SPTとは？

SPT（Shared Payment Token）は、AIエージェントがStripeでAPIコールの支払いを行えるようにします — 暗号通貨ではなく実際のカード決済を使用します。ユーザーが使用上限付きのトークンを事前承認し、エージェントはそれを使ってサービスに自律的に支払います。

## 仕組み

1. ユーザーが使用上限（最大金額、通貨、有効期限）付きのSPTをStripe経由で作成する
2. エージェントが有料エンドポイントにリクエストを送信する
3. サーバーが `WWW-Authenticate: Payment method="stripe", intent="charge", request="<base64url>"` 付きで **HTTP 402** を返す
4. エージェントが `request` フィールドをデコードして価格（金額、通貨）を把握する
5. エージェントがSPTを含む `Authorization: Payment <credential>` で再試行する
6. サーバーがそのトークンを使用してStripe PaymentIntentを作成し、成功を検証して応答する

## 主要な概念

- **Shared Payment Token**：エージェントに支払い権限を付与する、スコープ制限・限定使用のStripeトークン（プレフィックス `spt_`）
- **使用上限**：各トークンは最大金額、通貨、有効期限を持ち — ユーザーがエージェントの支出可能額を制御します
- **mppxミドルウェア**：[MPP](/kb/ja/mpp)（Tempo）決済を処理するのと同じミドルウェアがSPTも処理します — サーバーは両方を受け付け可能です
- **複数チャレンジ**：402レスポンスは異なる方式（tempo、stripe）の `WWW-Authenticate: Payment` ヘッダーを複数含めることができ、エージェントが支払い方法を選べます

## エージェントによるSPTのディスカバリー

SPTには2つのディスカバリーチャネルがあります:

1. **ランタイム（権威）**：`WWW-Authenticate: Payment` チャレンジに `method="stripe"` を含むHTTP 402レスポンス
2. **事前リクエスト（参考）**：支払いを必要とする操作に対する[OpenAPI](/kb/ja/openapi)の `x-payment-info` 拡張

402レスポンスが常に権威であり — OpenAPIメタデータは参考情報のみです。

## サービスへのSPTの追加方法

1. mppxをインストールする：`npm install mppx`
2. Stripeシークレットキーを設定する
3. mppxミドルウェアがTempoとStripeの両方の方式で402チャレンジを返します
4. SPTを持つエージェントはStripe経由で支払い、pathUSDを持つエージェントはTempo経由で支払えます

## 詳細情報

- [Stripe SPT docs](https://docs.stripe.com/agentic-commerce/concepts/shared-payment-tokens) — トークンの作成と使用
- [mppx on npm](https://www.npmjs.com/package/mppx) — MPPとSPTの両方を処理するミドルウェア
- [paymentauth.org](https://paymentauth.org) — 決済ディスカバリー仕様