@rozoai/checkout 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,337 @@
1
+ # rozo-checkout
2
+
3
+ [English](../README.md) | [简体中文](README.zh.md) | **日本語** | [Español](README.es.md)
4
+
5
+ **OpenRouter の Coinbase 決済リンク (Payment Link)** を、そのリンクが直接受け取れない
6
+ 通貨で支払います — Lightning 経由の BTC、または Solana、BNB Chain、Ethereum、
7
+ Polygon、Base、Stellar 上の USDT/USDC です。Coinbase の決済リンクは Base 上の USDC しか
8
+ 受け付けません。本ツールは、あなたが実際に保有している通貨をブリッジ経由で中継し、
9
+ 資金提供ウォレット (funder wallet) があなたに代わってインボイスを決済します。
10
+ アカウントも API キーもブラウザーも不要です。
11
+
12
+ ```bash
13
+ npx @rozoai/checkout pay <coinbase-link>
14
+ ```
15
+
16
+ どの通貨で支払うかを最初に尋ねます。プロンプトでウォレットアドレスを貼り付けると、
17
+ どの通貨なら残高が足りるかを表示します。そのあと、任意のウォレットから支払うための
18
+ 入金アドレスが表示されます — **秘密鍵も環境変数も設定も一切不要です**。あとは
19
+ インボイスが決済完了するまで待つだけです。
20
+
21
+ 使う通貨が決まっている場合は、この質問を省略できます:
22
+
23
+ ```bash
24
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
25
+ ```
26
+
27
+ ## 支払いに使える通貨
28
+
29
+ | チェーン | `--with` | チェーン id | 備考 |
30
+ |---|---|---|---|
31
+ | Ethereum | `usdt-ethereum` `usdc-ethereum` | `1` | 小数点以下 6 桁 |
32
+ | BNB Chain | `usdt-bnb` `usdc-bnb` | `56` | 小数点以下 18 桁 |
33
+ | Polygon | `usdt-polygon` `usdc-polygon` | `137` | 小数点以下 6 桁 |
34
+ | Base | `usdc-base` | `8453` | 小数点以下 6 桁 |
35
+ | Solana | `usdt-solana` `usdc-solana` | `900` | SPL。ネイティブの SOL は非対応 |
36
+ | Stellar | `usdc-stellar` | `1500` | メモが必須 — 入金ブロックに表示されます |
37
+ | Bitcoin Lightning | `btc-lightning` | `lightning` | BOLT11。金額は satoshi 単位 |
38
+
39
+ ネイティブのガス通貨(SOL、BNB、ETH、MATIC)およびオンチェーンの BTC は受け付けません。
40
+
41
+ ## どのウォレットが必要ですか?
42
+
43
+ **ウォレットは 1 つ、チェーンも 1 つで足ります — チェーンごとに用意する必要はありません。**上の表から、すでに持っている通貨を選び、それが今ある場所から支払ってください。
44
+
45
+ - **どのウォレットでも構いませんし、取引所からの出金でも構いません。**既定の経路は入金情報を表示するだけです。示された `amount` の `tokenSymbol` を、その `chain` 上で `receiverAddress` へ送るだけです。どのサイトに接続することも、ブラウザで承認することもありません。実際には、EVM チェーンでは MetaMask や Rabby、Solana では Phantom や Solflare、BTC では Phoenix や Wallet of Satoshi といった Lightning ウォレットがよく使われています。
46
+ - **注意が必要なのは Stellar です。**Stellar の入金は共有アドレスと `receiverMemo` の組み合わせで振り分けられるため、取引所であれウォレットであれ、送信元で memo を設定できる必要があります。memo を省くと、その支払いは失われます。
47
+ - **Lightning はアドレスではなくインボイスに支払います。**`deposit.lnInvoice` をスキャンまたは貼り付けてください。送金先アドレスというものはありません。
48
+ - **秘密鍵が必要なのは `--send` だけ**で、`ROZO_CHECKOUT_EVM_KEY` または `ROZO_CHECKOUT_SOL_KEY` から読み込まれ、対象は EVM チェーンと Solana のみです。それ以外はすべて鍵不要です。
49
+
50
+ ## エージェントから使う
51
+
52
+ 渡す内容はどこでも同じです。上のワンライナーそのものか、エージェントに
53
+ [llms.txt](../llms.txt) を読ませるかのどちらかです。**自分のウォレットから支払う場合、
54
+ 鍵は一切不要です。** ローカルで署名するのは任意の `--send` フラグだけで、
55
+ `ROZO_CHECKOUT_EVM_KEY` / `ROZO_CHECKOUT_SOL_KEY` を読むのもそのフラグだけです。
56
+ エージェントやスクリプトでは必ず `--with` を渡してください。対話式の選択は端末でのみ
57
+ 表示され、既定の通貨は意図的にありません。
58
+
59
+ <details>
60
+ <summary><b>Claude Code</b> — スキルをインストールするか、ワンライナーを貼り付ける</summary>
61
+
62
+ このリポジトリは Claude Code のスキルです。`SKILL.md` と `scripts/dist/` 内の実行可能
63
+ ファイルが同梱されています。スキルディレクトリにクローンすれば、Claude Code が自動的に
64
+ 認識します。
65
+
66
+ ```bash
67
+ git clone https://github.com/RozoAI/rozo-checkout-skill ~/.claude/skills/rozo-checkout
68
+ ```
69
+
70
+ インストールせずに、実行を依頼するだけでも構いません:
71
+
72
+ ```
73
+ この OpenRouter のリンクを Solana の USDT で支払ってください:
74
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
75
+ ```
76
+
77
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** Claude にホットウォレット
78
+ から署名させたい場合にだけ `--send` を追加してください。その場合は環境変数の鍵が必要です。
79
+ </details>
80
+
81
+ <details>
82
+ <summary><b>Codex CLI</b> — AGENTS.md に書くか、そのまま実行する</summary>
83
+
84
+ Codex はプロジェクトルートの `AGENTS.md` を読みます。毎回説明しなくても支払い方が
85
+ 分かるように、常設の指示を追加しておきましょう:
86
+
87
+ ```
88
+ OpenRouter / Coinbase の決済リンクを支払うには、次を実行してください:
89
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
90
+ ```
91
+
92
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** Solana CLI の鍵ペアまたは暗号化された keystore を使う `--send` の場合だけ
93
+ 環境変数の鍵が必要です。
94
+ </details>
95
+
96
+ <details>
97
+ <summary><b>OpenCode</b> — AGENTS.md に書くか、そのまま実行する</summary>
98
+
99
+ OpenCode もプロジェクトルートの `AGENTS.md` を読むため、上の Codex 用のスニペットが
100
+ そのまま使えます。最短経路はやはりコマンドそのものです:
101
+
102
+ ```bash
103
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
104
+ ```
105
+
106
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** Solana CLI の鍵ペアまたは暗号化された keystore を使う `--send` の場合だけ
107
+ 環境変数の鍵が必要です。
108
+ </details>
109
+
110
+ <details>
111
+ <summary><b>Cline</b> — .clinerules に書くか、そのまま実行する</summary>
112
+
113
+ Cline はプロジェクトルートの `.clinerules` から常設の指示を読み込みます:
114
+
115
+ ```
116
+ OpenRouter / Coinbase の決済リンクを支払うには、次を実行してください:
117
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
118
+ ```
119
+
120
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** Solana CLI の鍵ペアまたは暗号化された keystore を使う `--send` の場合だけ
121
+ 環境変数の鍵が必要です。
122
+ </details>
123
+
124
+ <details>
125
+ <summary><b>Cursor</b> — .cursor/rules に書くか、そのまま実行する</summary>
126
+
127
+ `.cursor/rules/rozo-checkout.mdc` にプロジェクトルールを追加します:
128
+
129
+ ```
130
+ OpenRouter / Coinbase の決済リンクを支払うには、次を実行してください:
131
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
132
+ ```
133
+
134
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** Solana CLI の鍵ペアまたは暗号化された keystore を使う `--send` の場合だけ
135
+ 環境変数の鍵が必要です。
136
+ </details>
137
+
138
+ <details>
139
+ <summary><b>Hermes Agent</b> — セッション内でワンライナーを実行する</summary>
140
+
141
+ Hermes Agent(Nous Research)はシェルにアクセスでき、独自のスキルシステムを持っています。
142
+ `hermes` で起動して、こう依頼してください:
143
+
144
+ ```
145
+ https://checkout.rozo.ai/llms.txt を取得したうえで、この OpenRouter のリンクを支払ってください:
146
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
147
+ ```
148
+
149
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** Solana CLI の鍵ペアまたは暗号化された keystore を使う `--send` の場合だけ
150
+ 環境変数の鍵が必要です。
151
+ </details>
152
+
153
+ <details>
154
+ <summary><b>OpenClaw</b> — openclaw agent exec</summary>
155
+
156
+ OpenClaw のヘッドレス入口は単発のタスクを実行するため、スクリプトやチャットチャンネル
157
+ から起動する支払いに向いています:
158
+
159
+ ```bash
160
+ openclaw agent exec "Pay this OpenRouter link with USDT on Solana by running: npx @rozoai/checkout pay <coinbase-link> --with usdt-solana"
161
+ ```
162
+
163
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** Solana CLI の鍵ペアまたは暗号化された keystore を使う `--send` の場合だけ
164
+ 環境変数の鍵が必要です。
165
+ </details>
166
+
167
+ <details>
168
+ <summary><b>Pi</b> — セッション内でワンライナーを実行する</summary>
169
+
170
+ Pi は BYOK のターミナルエージェントで、組み込みツールに `bash` を含むため、コマンドを
171
+ 直接実行できます。`pi` で起動して、こう依頼してください:
172
+
173
+ ```
174
+ この OpenRouter のリンクを Solana の USDT で支払ってください。次を実行します:
175
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
176
+ ```
177
+
178
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** Solana CLI の鍵ペアまたは暗号化された keystore を使う `--send` の場合だけ
179
+ 環境変数の鍵が必要です。
180
+ </details>
181
+
182
+ <details>
183
+ <summary><b>ターミナル — エージェントなし</b> — スクリプトを 1 ステップずつ実行する</summary>
184
+
185
+ 各ステップを自分で進めます。バンドルは自己完結型なので、Node 18 以降のほかに
186
+ インストールするものはありません。
187
+
188
+ ```bash
189
+ git clone https://github.com/RozoAI/rozo-checkout-skill && cd rozo-checkout-skill
190
+ LINK="https://payments.coinbase.com/payment-links/pl_01YOURLINKID"
191
+
192
+ # 読み取り専用の見積もり。費用はかかりません
193
+ node scripts/dist/quote.js --url "$LINK"
194
+
195
+ # 注文を作成します。ここでは完全な入金アドレスは伏せられ、まず確認用の
196
+ # マスクされた要約が返ります。
197
+ node scripts/dist/create-order.js --url "$LINK" --chain 900 --token USDT
198
+
199
+ # 支払うと決めたら、--confirm を付けて再実行し、アドレスを開示します
200
+ node scripts/dist/create-order.js --url "$LINK" --chain 900 --token USDT --confirm
201
+
202
+ # 入金ブロックの内容を任意のウォレットから支払い、決済完了を見守ります
203
+ node scripts/dist/status.js --rozo-payment-id <uuid> --watch
204
+ ```
205
+
206
+ 各スクリプトは標準出力にちょうど 1 個の JSON オブジェクトを出力します。終了コードは
207
+ `0` が成功、`1` が拒否/失敗(`error.code` を参照)、`2` が使い方の誤り、`3` が送信済みだが
208
+ 未確認です。詳しい手順: [クイックスタート](QUICKSTART.ja.md)。
209
+
210
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** ホットウォレットからの送金
211
+ については、`ROZO_CHECKOUT_EVM_KEY` / `ROZO_CHECKOUT_SOL_KEY` を読む `send-evm.js` /
212
+ `send-sol.js` を参照してください。
213
+ </details>
214
+
215
+ <details>
216
+ <summary><b>その他のあらゆるエージェント</b> — llms.txt を読ませる</summary>
217
+
218
+ URL を取得してコマンドを実行できるエージェントであれば、どれでもこれができます:
219
+
220
+ ```
221
+ https://checkout.rozo.ai/llms.txt を自分のコンテキストに読み込み、それを使って
222
+ この OpenRouter のリンクを支払ってください: <coinbase-link>
223
+ ```
224
+
225
+ シェルを持たないエージェントでも、HTTP リクエストが可能なら 4 つの公開エンドポイントを
226
+ 直接操作できます — [仕組み](how-it-works.md) を参照してください。
227
+
228
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** Solana CLI の鍵ペアまたは暗号化された keystore を使う `--send` の場合だけ
229
+ 環境変数の鍵が必要です。
230
+ </details>
231
+
232
+ <details>
233
+ <summary><b><code>--send</code> 用のローカルウォレット設定</b> — .env テンプレートとウォレット別の書き出し手順</summary>
234
+
235
+ **既定の経路ではここに書かれたものは一切不要です。** 自分のウォレットから支払う場合、
236
+ 鍵も設定も要りません。しかもここでは決して使えないウォレット — ハードウェアウォレットや
237
+ 取引所アカウントを含む — でも支払えます。
238
+
239
+ コマンドを実行するディレクトリに `.env` を置きます。本ツールが読み取る変数の全一覧です:
240
+
241
+ ```bash
242
+ # 自分のウォレットから支払う場合、以下はどれも不要です。--send を使うときだけ
243
+ # 読み込まれます。
244
+
245
+ # Solana の秘密鍵: base58 文字列、または JSON のバイト配列。
246
+ # ~/.config/solana/id.json (自動的に使われます) が無い場合にのみ必要です。
247
+ ROZO_CHECKOUT_SOL_KEY=REPLACE_ME_base58_secret_key
248
+
249
+ # EVM の生の秘密鍵: 0x + 16 進 64 文字。最も安全でない選択肢です。
250
+ # 下の keystore を優先してください。
251
+ ROZO_CHECKOUT_EVM_KEY=0x0000000000000000000000000000000000000000000000000000000000000000
252
+
253
+ # EVM の暗号化 V3 keystore: そのファイルへのパス。上の生の鍵より推奨されます。
254
+ ROZO_CHECKOUT_EVM_KEYSTORE=/replace/me/keystores/my-hot-wallet
255
+
256
+ # その keystore のパスフレーズ。無人実行のときだけ必要で、端末では対話的に
257
+ # 尋ねられ、保存もされません。
258
+ ROZO_CHECKOUT_KEYSTORE_PASSPHRASE=REPLACE_ME_not_a_real_passphrase
259
+
260
+ # 任意の RPC 上書き。チェーン id ごとに 1 行。8453 = Base、900 = Solana。
261
+ ROZO_CHECKOUT_RPC_8453=https://mainnet.base.org
262
+ ROZO_CHECKOUT_RPC_900=https://api.mainnet-beta.solana.com
263
+ ```
264
+
265
+ そのうえで権限を絞り、git に入らないようにします:
266
+
267
+ ```bash
268
+ chmod 600 .env
269
+ echo '.env' >> .gitignore
270
+ ```
271
+
272
+ **Solana**
273
+
274
+ - `solana-keygen new` は `~/.config/solana/id.json` を書き出します。設定は不要で、
275
+ 自動的に見つかります。これが推奨の経路です。
276
+ - **Phantom** → Settings → Export Private Key で得られるのは **base58** 文字列です。
277
+ `ROZO_CHECKOUT_SOL_KEY` に設定してください。
278
+ - **Solflare** は現行バージョンでは base58 文字列、古いバージョンでは JSON のバイト配列を
279
+ 書き出します。どちらもそのまま使えます。
280
+
281
+ **EVM**
282
+
283
+ - **MetaMask** と **Rabby** の秘密鍵の書き出しは 16 進 64 文字です。そのまま
284
+ `ROZO_CHECKOUT_EVM_KEY` に貼り付けてください。`0x` 接頭辞は付けても付けなくても
285
+ 構いません。
286
+ - **暗号化 keystore (より安全)。** ブラウザーウォレットが書き出せるのは生の鍵だけで、
287
+ keystore ではありません。生の鍵を暗号化 keystore に変えるには Foundry を使います:
288
+ `cast wallet import my-hot-wallet --interactive` が鍵の入力を促し、暗号化された
289
+ V3 keystore を `~/.foundry/keystores/my-hot-wallet` に書き出します
290
+ (`--keystore-dir` で場所を変更できます)。`ROZO_CHECKOUT_EVM_KEYSTORE` をその
291
+ ファイルに向けてください。`geth account import` も V3 keystore を生成します。
292
+
293
+ **`--send` に使えないウォレット:** ハードウェアウォレット (Ledger、Trezor)、
294
+ WalletConnect 専用のモバイルウォレット、取引所アカウント。いずれも設計上、署名鍵を
295
+ 渡しません。これらの場合は既定の鍵なしの経路を使ってください — すべてで動作します。
296
+
297
+ </details>
298
+
299
+ ## 知っておく価値のある 3 つのルール
300
+
301
+ - **入金アドレスは使い捨てです。** 古い注文、キャッシュされたレスポンス、スクリーンショット
302
+ から得たアドレスを再利用しては決していけません。
303
+ - **表示された金額をそのとおりに送金してください。** 通常はインボイス金額より大きくなります
304
+ — ブリッジ手数料とネットワーク手数料が含まれるためです。
305
+ - **入金済みの注文に二重に支払っては決していけません。** すでに支払いが検知されている場合は
306
+ 中止し、人間に照合を依頼してください。使い捨てアドレスへの 2 回目の支払いは、入金として
307
+ 反映される保証がありません。
308
+
309
+ 本ツールが何を拒否するのか、そしてその理由の完全な一覧は
310
+ [safety.md](safety.md) にあります。
311
+
312
+ ## リンク
313
+
314
+ - [クイックスタート](QUICKSTART.ja.md) — 5 つのコマンドと、期待される出力
315
+ - [仕組み](how-it-works.md) — フロー、エンドポイント、識別子
316
+ - [安全性の設計](safety.md) — すべての安全機構の詳細
317
+ - [SKILL.md](../SKILL.md) — エージェント向けの指示書 · [llms.txt](../llms.txt) — 1 ファイルの要約
318
+ - [checkout.rozo.ai/agent](https://checkout.rozo.ai/agent.html) — 同じものを Web で
319
+ - [Issues](https://github.com/RozoAI/rozo-checkout-skill/issues) — バグと要望
320
+
321
+ ## 変更履歴
322
+
323
+ - **0.1.2** — モード B で環境変数に生の秘密鍵を置く必要がなくなりました。Solana では
324
+ `solana-keygen` が既に作成した `~/.config/solana/id.json` を、EVM では暗号化された
325
+ V3 keystore(パスフレーズは対話的に入力)を使います。`--keyfile` でどちらも明示でき、
326
+ 設定は gitignore した `.env` に置くこともできます。環境変数の生の鍵は無人自動化向けに
327
+ 引き続き利用できます。鍵ファイルと `.env` は `chmod 600` かつ git 未追跡である必要が
328
+ あります。
329
+ - **0.1.1** — 支出上限を 2 つから 1 つに変更しました。1 回の支払いは $1,100 を超えられず
330
+ ($1,000 のクレジット購入とその 5% の手数料に合わせた値です)、セッション累計の上限と
331
+ `--yes-large` による上書きは削除されました。自分のウォレットから支払う場合は鍵も設定も
332
+ 不要であることを、ドキュメントで明示しました。
333
+ - **0.1.0** — 最初のリリース: `npx @rozoai/checkout`。
334
+
335
+ ## ライセンス
336
+
337
+ MIT.
@@ -0,0 +1,307 @@
1
+ # rozo-checkout
2
+
3
+ [English](../README.md) | **简体中文** | [日本語](README.ja.md) | [Español](README.es.md)
4
+
5
+ 用一种 **OpenRouter Coinbase 收款链接 (Payment Link)** 本身收不了的币去付款 —— 走
6
+ 闪电网络的 BTC,或者 Solana、BNB Chain、Ethereum、Polygon、Base、Stellar 上的
7
+ USDT/USDC。Coinbase 收款链接只接受 Base 上的 USDC;本工具把你实际持有的币通过
8
+ 一座桥路由过去,再由一个出资钱包代你结清账单。无需账号、无需 API key、无需浏览器。
9
+
10
+ ```bash
11
+ npx @rozoai/checkout pay <coinbase-link>
12
+ ```
13
+
14
+ 它会先问你想用哪种币付款 —— 在提示处粘贴你的钱包地址,它就会标出哪些币你余额
15
+ 够付 —— 然后打印一个充值地址,你用任意钱包付进去即可 —— **不需要私钥、不需要
16
+ 环境变量、不需要任何配置**。之后它会一直等到账单被结清。
17
+
18
+ 已经知道要用哪种币?直接跳过这一问:
19
+
20
+ ```bash
21
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
22
+ ```
23
+
24
+ ## 可用于付款的币种
25
+
26
+ | 链 | `--with` | 链 id | 备注 |
27
+ |---|---|---|---|
28
+ | Ethereum | `usdt-ethereum` `usdc-ethereum` | `1` | 6 位小数 |
29
+ | BNB Chain | `usdt-bnb` `usdc-bnb` | `56` | 18 位小数 |
30
+ | Polygon | `usdt-polygon` `usdc-polygon` | `137` | 6 位小数 |
31
+ | Base | `usdc-base` | `8453` | 6 位小数 |
32
+ | Solana | `usdt-solana` `usdc-solana` | `900` | SPL;不支持原生 SOL |
33
+ | Stellar | `usdc-stellar` | `1500` | 必须带 memo —— 会在充值信息块里给出 |
34
+ | Bitcoin Lightning | `btc-lightning` | `lightning` | BOLT11;金额单位为聪 |
35
+
36
+ 原生 gas 币(SOL、BNB、ETH、MATIC)以及链上 BTC 均不接受。
37
+
38
+ ## 我需要什么钱包?
39
+
40
+ **一个钱包、一条链就够了——不需要每条链各准备一个。**从上面挑一种你已经持有的币,然后从它现在所在的地方付款即可。
41
+
42
+ - **任何钱包都可以,从交易所提币同样可以。**默认路径只是打印一段充值信息:按其中给出的 `amount`、`tokenSymbol`、`chain`,把钱发到 `receiverAddress` 即可。全程不需要连接任何网站,也不需要在浏览器里做任何授权。实践中大家在 EVM 链上用 MetaMask 或 Rabby,在 Solana 上用 Phantom 或 Solflare,付 BTC 时用 Phoenix、Wallet of Satoshi 之类的闪电钱包。
43
+ - **Stellar 是需要特别小心的那一条。**它的充值走的是共享地址加 `receiverMemo` 的方式,所以无论你从交易所还是钱包发出,都必须能填写 memo。漏掉 memo,这笔钱就丢了。
44
+ - **闪电网络付的是一张 invoice,不是地址。**扫描或粘贴 `deposit.lnInvoice` 即可,这条路径上没有可转账的地址。
45
+ - **只有 `--send` 需要私钥**,从 `ROZO_CHECKOUT_EVM_KEY` 或 `ROZO_CHECKOUT_SOL_KEY` 读取,且仅支持 EVM 链和 Solana。其余方式都不涉及私钥。
46
+
47
+ ## 在你的 agent 里使用
48
+
49
+ 不管用哪个 agent,喂给它的东西都一样:上面那条命令,或者直接让它读
50
+ [llms.txt](../llms.txt)。**用你自己的钱包付款永远不需要私钥。** 只有可选的
51
+ `--send` 才会在本地签名,也只有它会读取 `ROZO_CHECKOUT_EVM_KEY` /
52
+ `ROZO_CHECKOUT_SOL_KEY`。
53
+
54
+ <details>
55
+ <summary><b>Claude Code</b> —— 安装 skill,或者直接粘贴那条命令</summary>
56
+
57
+ 本仓库本身就是一个 Claude Code skill:它自带 `SKILL.md` 和 `scripts/dist/` 里的
58
+ 可执行文件。把它克隆到你的 skills 目录,Claude Code 会自动识别。
59
+
60
+ ```bash
61
+ git clone https://github.com/RozoAI/rozo-checkout-skill ~/.claude/skills/rozo-checkout
62
+ ```
63
+
64
+ 或者跳过安装,直接让它执行:
65
+
66
+ ```
67
+ 用 Solana 上的 USDT 支付这个 OpenRouter 链接:
68
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
69
+ ```
70
+
71
+ 钱包:任意钱包,**无需私钥**。只有当你想让 Claude 用热钱包签名时才加 `--send`(用你的 Solana CLI 密钥对或加密 keystore),
72
+ 那一步才需要环境变量里的私钥。
73
+ </details>
74
+
75
+ <details>
76
+ <summary><b>Codex CLI</b> —— 写进 AGENTS.md,或者直接跑</summary>
77
+
78
+ Codex 会读取项目根目录的 `AGENTS.md`。加一条常驻指令,它就不用每次都被告知怎么付:
79
+
80
+ ```
81
+ 要支付 OpenRouter / Coinbase 收款链接,执行:
82
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
83
+ ```
84
+
85
+ 钱包:任意钱包,**无需私钥**。只有 `--send` 需要,它用你的 Solana CLI 密钥对或加密 keystore 在本地签名。
86
+ </details>
87
+
88
+ <details>
89
+ <summary><b>OpenCode</b> —— 写进 AGENTS.md,或者直接跑</summary>
90
+
91
+ OpenCode 同样读取项目根目录的 `AGENTS.md`,所以上面那段 Codex 的写法可以原样照搬。
92
+ 最短的路径依然是直接执行命令本身:
93
+
94
+ ```bash
95
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
96
+ ```
97
+
98
+ 钱包:任意钱包,**无需私钥**。只有 `--send` 需要,它用你的 Solana CLI 密钥对或加密 keystore 在本地签名。
99
+ </details>
100
+
101
+ <details>
102
+ <summary><b>Cline</b> —— 写进 .clinerules,或者直接跑</summary>
103
+
104
+ Cline 从项目根目录的 `.clinerules` 读取常驻指令:
105
+
106
+ ```
107
+ 要支付 OpenRouter / Coinbase 收款链接,执行:
108
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
109
+ ```
110
+
111
+ 钱包:任意钱包,**无需私钥**。只有 `--send` 需要,它用你的 Solana CLI 密钥对或加密 keystore 在本地签名。
112
+ </details>
113
+
114
+ <details>
115
+ <summary><b>Cursor</b> —— 写进 .cursor/rules,或者直接跑</summary>
116
+
117
+ 在 `.cursor/rules/rozo-checkout.mdc` 加一条项目规则:
118
+
119
+ ```
120
+ 要支付 OpenRouter / Coinbase 收款链接,执行:
121
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
122
+ ```
123
+
124
+ 钱包:任意钱包,**无需私钥**。只有 `--send` 需要,它用你的 Solana CLI 密钥对或加密 keystore 在本地签名。
125
+ </details>
126
+
127
+ <details>
128
+ <summary><b>Hermes Agent</b> —— 在会话里跑那条命令</summary>
129
+
130
+ Hermes Agent(Nous Research)有 shell 权限,也有自己的 skill 体系。用 `hermes`
131
+ 启动后这样说:
132
+
133
+ ```
134
+ 先抓取 https://checkout.rozo.ai/llms.txt,然后支付这个 OpenRouter 链接:
135
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
136
+ ```
137
+
138
+ 钱包:任意钱包,**无需私钥**。只有 `--send` 需要,它用你的 Solana CLI 密钥对或加密 keystore 在本地签名。
139
+ </details>
140
+
141
+ <details>
142
+ <summary><b>OpenClaw</b> —— openclaw agent exec</summary>
143
+
144
+ OpenClaw 的无头入口用来跑一次性任务,很适合从脚本或聊天渠道里触发一笔付款:
145
+
146
+ ```bash
147
+ openclaw agent exec "Pay this OpenRouter link with USDT on Solana by running: npx @rozoai/checkout pay <coinbase-link> --with usdt-solana"
148
+ ```
149
+
150
+ 钱包:任意钱包,**无需私钥**。只有 `--send` 需要,它用你的 Solana CLI 密钥对或加密 keystore 在本地签名。
151
+ </details>
152
+
153
+ <details>
154
+ <summary><b>Pi</b> —— 在会话里跑那条命令</summary>
155
+
156
+ Pi 是一个 BYOK 终端 agent,内置工具里就有 `bash`,可以直接执行命令。用 `pi`
157
+ 启动后这样说:
158
+
159
+ ```
160
+ 用 Solana 上的 USDT 支付这个 OpenRouter 链接,执行:
161
+ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
162
+ ```
163
+
164
+ 钱包:任意钱包,**无需私钥**。只有 `--send` 需要,它用你的 Solana CLI 密钥对或加密 keystore 在本地签名。
165
+ </details>
166
+
167
+ <details>
168
+ <summary><b>终端 —— 完全不用 agent</b> —— 一步步跑脚本</summary>
169
+
170
+ 每一步都自己来。打包产物是自包含的,除了 Node 18+ 之外不需要装任何东西。
171
+
172
+ ```bash
173
+ git clone https://github.com/RozoAI/rozo-checkout-skill && cd rozo-checkout-skill
174
+ LINK="https://payments.coinbase.com/payment-links/pl_01YOURLINKID"
175
+
176
+ # 只读报价,不产生任何费用
177
+ node scripts/dist/quote.js --url "$LINK"
178
+
179
+ # 创建订单。此阶段完整充值地址会被扣留:你先拿到一份打码后的摘要用于核对。
180
+ node scripts/dist/create-order.js --url "$LINK" --chain 900 --token USDT
181
+
182
+ # 决定付款之后,加 --confirm 重新执行同一条命令来释放它
183
+ node scripts/dist/create-order.js --url "$LINK" --chain 900 --token USDT --confirm
184
+
185
+ # 用任意钱包按充值信息块付款,然后观察它结清
186
+ node scripts/dist/status.js --rozo-payment-id <uuid> --watch
187
+ ```
188
+
189
+ 每个脚本在 stdout 上只打印一个 JSON 对象。退出码 `0` 表示成功,`1` 表示被拒绝/
190
+ 失败(读 `error.code`),`2` 表示用法错误,`3` 表示已提交但未确认。完整走一遍:
191
+ [QUICKSTART](QUICKSTART.zh.md)。
192
+
193
+ 钱包:任意钱包,**无需私钥**。热钱包发送见 `send-evm.js` / `send-sol.js`,它们读取
194
+ `ROZO_CHECKOUT_EVM_KEY` / `ROZO_CHECKOUT_SOL_KEY`。agent 和脚本必须显式传 `--with`:
195
+ 交互式选择只在终端里出现,而且刻意没有默认币种。
196
+ </details>
197
+
198
+ <details>
199
+ <summary><b>任何其他 agent</b> —— 让它去读 llms.txt</summary>
200
+
201
+ 只要一个 agent 能抓 URL、能执行命令,它就能干这件事:
202
+
203
+ ```
204
+ 把 https://checkout.rozo.ai/llms.txt 抓进你的上下文,然后照着它
205
+ 支付这个 OpenRouter 链接:<coinbase-link>
206
+ ```
207
+
208
+ 如果 agent 没有 shell 但能发 HTTP 请求,它可以直接调用那四个公开端点 —— 见
209
+ [工作原理](how-it-works.md)。
210
+
211
+ 钱包:任意钱包,**无需私钥**。只有 `--send` 需要,它用你的 Solana CLI 密钥对或加密 keystore 在本地签名。
212
+ </details>
213
+
214
+ <details>
215
+ <summary><b>为 <code>--send</code> 配置本地钱包</b> —— .env 模板与各钱包导出步骤</summary>
216
+
217
+ **默认路径不需要这里的任何东西。** 用你自己的钱包付款既不需要私钥也不需要任何配置,
218
+ 而且支持那些在这里根本用不了的钱包 —— 包括硬件钱包和交易所账户。
219
+
220
+ 在你运行命令的目录放一个 `.env`,下面列出了本工具会读取的全部变量:
221
+
222
+ ```bash
223
+ # 用你自己的钱包付款不需要下面任何一项。它们只在你使用 --send 时才被读取。
224
+
225
+ # Solana 私钥:base58 字符串,或 JSON 字节数组。只有在你没有
226
+ # ~/.config/solana/id.json(它会被自动识别)时才需要填。
227
+ ROZO_CHECKOUT_SOL_KEY=REPLACE_ME_base58_secret_key
228
+
229
+ # EVM 原始私钥:0x 加 64 位十六进制。这是最不安全的方式 —— 优先用下面的 keystore。
230
+ ROZO_CHECKOUT_EVM_KEY=0x0000000000000000000000000000000000000000000000000000000000000000
231
+
232
+ # EVM 加密 V3 keystore:文件路径。比上面的原始私钥更推荐。
233
+ ROZO_CHECKOUT_EVM_KEYSTORE=/replace/me/keystores/my-hot-wallet
234
+
235
+ # 该 keystore 的口令。只在无人值守时需要;在终端上会交互式提示,且不会被保存。
236
+ ROZO_CHECKOUT_KEYSTORE_PASSPHRASE=REPLACE_ME_not_a_real_passphrase
237
+
238
+ # 可选的 RPC 覆盖,按链 id 一条。8453 = Base,900 = Solana。
239
+ ROZO_CHECKOUT_RPC_8453=https://mainnet.base.org
240
+ ROZO_CHECKOUT_RPC_900=https://api.mainnet-beta.solana.com
241
+ ```
242
+
243
+ 然后锁好权限,并确保它不进 git:
244
+
245
+ ```bash
246
+ chmod 600 .env
247
+ echo '.env' >> .gitignore
248
+ ```
249
+
250
+ **Solana**
251
+
252
+ - `solana-keygen new` 会写出 `~/.config/solana/id.json`。什么都不用配 —— 它会被自动
253
+ 找到。这是我们推荐的方式。
254
+ - **Phantom** → Settings → Export Private Key 给出的是 **base58** 字符串,填进
255
+ `ROZO_CHECKOUT_SOL_KEY`。
256
+ - **Solflare** 新版本导出 base58 字符串,旧版本导出 JSON 字节数组。两种都可以直接用。
257
+
258
+ **EVM**
259
+
260
+ - **MetaMask** 和 **Rabby** → 导出私钥给出的是 64 位十六进制字符串。直接原样粘贴到
261
+ `ROZO_CHECKOUT_EVM_KEY` 即可;`0x` 前缀加不加都行。
262
+ - **加密 keystore(更安全)。** 浏览器钱包只能导出原始私钥,不能导出 keystore。
263
+ 想把私钥变成加密 keystore,可以用 Foundry:`cast wallet import my-hot-wallet
264
+ --interactive` 会提示你输入私钥,并把加密的 V3 keystore 写到
265
+ `~/.foundry/keystores/my-hot-wallet`(用 `--keystore-dir` 可改目录)。然后把
266
+ `ROZO_CHECKOUT_EVM_KEYSTORE` 指向该文件。`geth account import` 同样会生成 V3 keystore。
267
+
268
+ **不能用于 `--send` 的钱包:** 硬件钱包(Ledger、Trezor)、只支持 WalletConnect 的
269
+ 手机钱包,以及交易所账户。它们在设计上就不会交出签名私钥。这类用户请走默认的无私钥
270
+ 路径 —— 那条路对它们全都适用。
271
+
272
+ </details>
273
+
274
+ ## 三条必须知道的规则
275
+
276
+ - **充值地址是一次性的。** 绝不要复用旧订单、缓存响应或截图里的地址。
277
+ - **严格按显示的金额发送。** 它通常比账单金额大 —— 因为包含了跨桥费和网络费。
278
+ - **绝不要对已入账的订单二次付款。** 一旦检测到已有付款,就停下来找人工核对;
279
+ 再往一个一次性地址打第二笔钱,不保证能被记账。
280
+
281
+ 它拒绝去做哪些事、以及为什么,完整清单见
282
+ [docs/safety.md](safety.md)。
283
+
284
+ ## 相关链接
285
+
286
+ - [快速开始](QUICKSTART.zh.md) —— 五条命令,附预期输出
287
+ - [工作原理](how-it-works.md) —— 流程、端点、标识符
288
+ - [安全设计](safety.md) —— 每一道防线的细节
289
+ - [SKILL.md](../SKILL.md) —— 面向 agent 的指令 · [llms.txt](../llms.txt) —— 单文件摘要
290
+ - [checkout.rozo.ai/agent](https://checkout.rozo.ai/agent.html) —— 网页版,同样的东西
291
+ - [Issues](https://github.com/RozoAI/rozo-checkout-skill/issues) —— bug 与需求
292
+
293
+ ## 更新日志
294
+
295
+ - **0.1.2** —— 模式 B 不再需要把原始私钥放进环境变量。Solana 直接用 `solana-keygen`
296
+ 已经写好的 `~/.config/solana/id.json`;EVM 用加密的 V3 keystore,口令交互式提示输入。
297
+ `--keyfile` 可以显式指定其中任一种,相关设置也可以放进已 gitignore 的 `.env`。
298
+ 环境变量里的原始私钥仍然可用于无人值守的自动化。密钥文件和 `.env` 必须
299
+ `chmod 600` 且不被 git 跟踪。
300
+ - **0.1.1** —— 两条额度上限合并为一条:单笔付款不得超过 $1,100(按购买 $1,000
301
+ 额度加 5% 手续费来设定),单会话累计上限与 `--yes-large` 绕过开关均已移除。文档
302
+ 明确说明:用你自己的钱包付款不需要私钥,也不需要任何配置。
303
+ - **0.1.0** —— 首个版本:`npx @rozoai/checkout`。
304
+
305
+ ## 许可证
306
+
307
+ MIT。