@rozoai/checkout 0.1.2 → 0.1.4

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.
package/README.md CHANGED
@@ -32,7 +32,7 @@ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
32
32
  | Polygon | `usdt-polygon` `usdc-polygon` | `137` | 6 decimals |
33
33
  | Base | `usdc-base` | `8453` | 6 decimals |
34
34
  | Solana | `usdt-solana` `usdc-solana` | `900` | SPL; native SOL not supported |
35
- | Stellar | `usdc-stellar` | `1500` | memo required — shown in the deposit block |
35
+ | Stellar | `usdc-stellar` | `1500` | `MEMO_TEXT` memo required — shown in the deposit block |
36
36
  | Bitcoin Lightning | `btc-lightning` | `lightning` | BOLT11; amounts in satoshis |
37
37
 
38
38
  Native gas coins (SOL, BNB, ETH, MATIC) and on-chain BTC are not accepted.
@@ -169,7 +169,8 @@ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
169
169
  ```
170
170
 
171
171
  Wallet: any wallet, no key. `--send` signs locally using your Solana CLI
172
- keypair or an encrypted keystore.
172
+ keypair or an encrypted keystore, and supports EVM chains and Solana only —
173
+ Stellar and Lightning are Mode A only.
173
174
  </details>
174
175
 
175
176
  <details>
@@ -183,7 +184,8 @@ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
183
184
  ```
184
185
 
185
186
  Wallet: any wallet, no key. `--send` signs locally using your Solana CLI
186
- keypair or an encrypted keystore.
187
+ keypair or an encrypted keystore, and supports EVM chains and Solana only —
188
+ Stellar and Lightning are Mode A only.
187
189
  </details>
188
190
 
189
191
  <details>
@@ -197,7 +199,8 @@ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
197
199
  ```
198
200
 
199
201
  Wallet: any wallet, no key. `--send` signs locally using your Solana CLI
200
- keypair or an encrypted keystore.
202
+ keypair or an encrypted keystore, and supports EVM chains and Solana only —
203
+ Stellar and Lightning are Mode A only.
201
204
  </details>
202
205
 
203
206
  <details>
@@ -211,7 +214,8 @@ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
211
214
  ```
212
215
 
213
216
  Wallet: any wallet, no key. `--send` signs locally using your Solana CLI
214
- keypair or an encrypted keystore.
217
+ keypair or an encrypted keystore, and supports EVM chains and Solana only —
218
+ Stellar and Lightning are Mode A only.
215
219
  </details>
216
220
 
217
221
  <details>
@@ -226,7 +230,8 @@ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
226
230
  ```
227
231
 
228
232
  Wallet: any wallet, no key. `--send` signs locally using your Solana CLI
229
- keypair or an encrypted keystore.
233
+ keypair or an encrypted keystore, and supports EVM chains and Solana only —
234
+ Stellar and Lightning are Mode A only.
230
235
  </details>
231
236
 
232
237
  <details>
@@ -240,7 +245,8 @@ openclaw agent exec "Pay this OpenRouter link with USDT on Solana by running: np
240
245
  ```
241
246
 
242
247
  Wallet: any wallet, no key. `--send` signs locally using your Solana CLI
243
- keypair or an encrypted keystore.
248
+ keypair or an encrypted keystore, and supports EVM chains and Solana only —
249
+ Stellar and Lightning are Mode A only.
244
250
  </details>
245
251
 
246
252
  <details>
@@ -255,7 +261,8 @@ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
255
261
  ```
256
262
 
257
263
  Wallet: any wallet, no key. `--send` signs locally using your Solana CLI
258
- keypair or an encrypted keystore.
264
+ keypair or an encrypted keystore, and supports EVM chains and Solana only —
265
+ Stellar and Lightning are Mode A only.
259
266
  </details>
260
267
 
261
268
  <details>
@@ -304,7 +311,8 @@ If the agent has no shell but can make HTTP requests, it can drive the four
304
311
  public endpoints directly — see [how it works](docs/how-it-works.md).
305
312
 
306
313
  Wallet: any wallet, no key. `--send` signs locally using your Solana CLI
307
- keypair or an encrypted keystore.
314
+ keypair or an encrypted keystore, and supports EVM chains and Solana only —
315
+ Stellar and Lightning are Mode A only.
308
316
  </details>
309
317
 
310
318
  ## Three rules worth knowing
@@ -313,6 +321,10 @@ keypair or an encrypted keystore.
313
321
  cached response or a screenshot.
314
322
  - **Send the exact amount shown.** It is normally larger than the invoice — it
315
323
  includes the bridge and network fees.
324
+ - **Stellar deposits carry a memo, and it is `MEMO_TEXT`** — even when it looks
325
+ like a number (`65371582` is text, not an id). Sending it as `MEMO_ID`
326
+ produces a different memo and the payment will not be matched. The deposit
327
+ block states the type as `receiverMemoType`.
316
328
  - **Never pay a funded order twice.** If a payment has already been detected,
317
329
  stop and get a human to reconcile it; a second payment to a one-time address
318
330
  is not guaranteed to be credited.
@@ -331,6 +343,15 @@ The full list of what this refuses to do, and why, is in
331
343
 
332
344
  ## Changelog
333
345
 
346
+ - **0.1.3** — fixes found by the first real payment. The built bundles no
347
+ longer crash with `__filename is not defined` on Node 22+ (the esbuild banner
348
+ now shims `__filename`/`__dirname` as well as `require`, and every bundle is
349
+ now executed by the test suite). Stellar deposits state their memo type
350
+ (`MEMO_TEXT`, even when the memo looks numeric). Orders show remaining
351
+ validity as a duration ("expires in 47m") in the deposit block and in
352
+ `status`, with the exact command to make a fresh one. Reusing an existing
353
+ unpaid order, and asking for a coin that differs from it, are both explained
354
+ instead of reading as errors.
334
355
  - **0.1.2** — Mode B no longer needs a raw private key in an environment
335
356
  variable. On Solana it uses the `~/.config/solana/id.json` that
336
357
  `solana-keygen` already wrote; on EVM an encrypted V3 keystore whose
@@ -159,6 +159,7 @@ exigen los scripts de envío.
159
159
  ```
160
160
 
161
161
  Enviar exactamente los campos que entrega este bloque. Para Lightning,
162
+ En Stellar el memo es **`MEMO_TEXT`** aunque parezca numérico: enviarlo como `MEMO_ID` no coincidirá. `deposit.expiresIn` indica cuánto sigue siendo válida la orden.
162
163
  `deposit.lnInvoice` contiene la cadena BOLT11 que hay que escanear, y
163
164
  `deposit.amount` está en satoshis.
164
165
 
@@ -182,8 +183,9 @@ Eso es todo el Modo A. Continuar en el paso 5.
182
183
 
183
184
  ### La forma opcional: dejar que el script pague (Modo B)
184
185
 
185
- Solo si se quiere que esta máquina firme, y únicamente en cadenas EVM y Solana.
186
- Esta es la única parte que necesita una clave.
186
+ Solo si se quiere que esta máquina firme, y únicamente en **cadenas EVM y
187
+ Solana**: no hay `--send` para Stellar ni Lightning, que se pagan desde la
188
+ propia billetera. Esta es la única parte que necesita una clave.
187
189
 
188
190
  **Solana: usar el par de claves que ya se tiene.** Si alguna vez se ejecutó
189
191
  `solana-keygen`, `~/.config/solana/id.json` ya existe y se usa automáticamente:
@@ -141,6 +141,7 @@ node scripts/dist/create-order.js --url "$LINK" --chain 900 --token USDT --confi
141
141
  ```
142
142
 
143
143
  このブロックが示すフィールドを、そのとおりに送金してください。Lightning の場合、
144
+ Stellar の memo は数字に見えても**常に `MEMO_TEXT`** です — `MEMO_ID` として送ると一致しません。`deposit.expiresIn` に残りの有効時間が出ます。
144
145
  `deposit.lnInvoice` にスキャン用の BOLT11 文字列が入り、`deposit.amount` は
145
146
  satoshi 単位になります。
146
147
 
@@ -163,8 +164,8 @@ satoshi 単位になります。
163
164
 
164
165
  ### 任意の方法: スクリプトに支払わせる(モード B)
165
166
 
166
- このマシンに署名させたい場合のみで、対象は EVM チェーンと Solana だけです。鍵が
167
- 必要なのはこの部分だけです。
167
+ このマシンに署名させたい場合のみで、対象は **EVM チェーンと Solana だけ**です。Stellar と
168
+ Lightning に `--send` はなく、自分のウォレットから支払います。鍵が必要なのはこの部分だけです。
168
169
 
169
170
  **Solana — すでにある鍵ペアをそのまま使います。** `solana-keygen` を一度でも実行して
170
171
  いれば `~/.config/solana/id.json` が既に存在し、自動的に使われます:
@@ -151,7 +151,10 @@ scripts require.
151
151
  }
152
152
  ```
153
153
 
154
- Send exactly the fields this block gives you. For Lightning,
154
+ Send exactly the fields this block gives you. On Stellar the memo is
155
+ **`MEMO_TEXT`** even when it looks numeric — sending it as `MEMO_ID` will not
156
+ match. `deposit.expiresIn` tells you how long the order stays valid. For
157
+ Lightning,
155
158
  `deposit.lnInvoice` holds the BOLT11 string to scan, and `deposit.amount` is
156
159
  in satoshis.
157
160
 
@@ -174,8 +177,9 @@ That is the whole of Mode A. Skip to step 5.
174
177
 
175
178
  ### The optional way: let the script pay (Mode B)
176
179
 
177
- Only if you want this machine to sign for you, and only on EVM chains and
178
- Solana. This is the only part that needs a key.
180
+ Only if you want this machine to sign for you, and only on **EVM chains and
181
+ Solana** — there is no `--send` for Stellar or Lightning, which are paid from
182
+ your own wallet. This is the only part that needs a key.
179
183
 
180
184
  **Solana — use the keypair you already have.** If you have ever run
181
185
  `solana-keygen`, `~/.config/solana/id.json` already exists and is used
@@ -129,7 +129,7 @@ node scripts/dist/create-order.js --url "$LINK" --chain 900 --token USDT --confi
129
129
  }
130
130
  ```
131
131
 
132
- 严格按这个信息块给出的字段来发送。对于 Lightning,`deposit.lnInvoice` 里是供扫码的
132
+ 严格按这个信息块给出的字段来发送。Stellar 上的 memo 即使看起来是纯数字,也**始终是 `MEMO_TEXT`** —— 按 `MEMO_ID` 发送不会被匹配上。`deposit.expiresIn` 会告诉你订单还有多久过期。对于 Lightning,`deposit.lnInvoice` 里是供扫码的
133
133
  BOLT11 字符串,`deposit.amount` 的单位是聪 (satoshis)。
134
134
 
135
135
  ## 4. 付款
@@ -150,8 +150,8 @@ BOLT11 字符串,`deposit.amount` 的单位是聪 (satoshis)。
150
150
 
151
151
  ### 可选的方式:让脚本替你付(模式 B)
152
152
 
153
- 只有当你想让这台机器替你签名时才需要,而且只支持 EVM 链和 Solana。这是整个流程里
154
- 唯一需要私钥的部分。
153
+ 只有当你想让这台机器替你签名时才需要,而且**只支持 EVM 链和 Solana** —— Stellar 和
154
+ 闪电网络没有 `--send`,只能用你自己的钱包付。这是整个流程里唯一需要私钥的部分。
155
155
 
156
156
  **Solana —— 直接用你已有的密钥对。** 只要你跑过 `solana-keygen`,
157
157
  `~/.config/solana/id.json` 就已经存在,脚本会自动使用它:
package/docs/README.es.md CHANGED
@@ -34,7 +34,7 @@ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
34
34
  | Polygon | `usdt-polygon` `usdc-polygon` | `137` | 6 decimales |
35
35
  | Base | `usdc-base` | `8453` | 6 decimales |
36
36
  | Solana | `usdt-solana` `usdc-solana` | `900` | SPL; SOL nativo no admitido |
37
- | Stellar | `usdc-stellar` | `1500` | memo obligatorio — se muestra en el bloque de depósito |
37
+ | Stellar | `usdc-stellar` | `1500` | memo `MEMO_TEXT` obligatorio — se muestra en el bloque de depósito |
38
38
  | Bitcoin Lightning | `btc-lightning` | `lightning` | BOLT11; importes en satoshis |
39
39
 
40
40
  Las monedas de gas nativas (SOL, BNB, ETH, MATIC) y el BTC on-chain no se aceptan.
@@ -103,7 +103,7 @@ Para pagar un enlace de pago de OpenRouter / Coinbase, ejecuta:
103
103
  npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
104
104
  ```
105
105
 
106
- Billetera: cualquier billetera, **sin clave**. Solo `--send` la necesita: firma localmente con el par de claves de la CLI de Solana o un keystore cifrado.
106
+ Billetera: cualquier billetera, **sin clave**. Solo `--send` la necesita: firma localmente con el par de claves de la CLI de Solana o un keystore cifrado, y solo admite cadenas EVM y Solana (Stellar y Lightning son solo Modo A).
107
107
  </details>
108
108
 
109
109
  <details>
@@ -329,6 +329,14 @@ La lista completa de lo que esta herramienta se niega a hacer, y por qué, está
329
329
 
330
330
  ## Registro de cambios
331
331
 
332
+ - **0.1.3** — Correcciones surgidas del primer pago real. Los bundles ya no fallan
333
+ con `__filename is not defined` en Node 22+ (el banner de esbuild ahora define
334
+ `__filename`/`__dirname` además de `require`, y las pruebas ejecutan cada bundle
335
+ de verdad). Los depósitos de Stellar indican el tipo de memo (`MEMO_TEXT`, aunque
336
+ el memo parezca numérico). Las órdenes muestran la validez restante como duración
337
+ ("expires in 47m") en el bloque de depósito y en `status`, con el comando exacto
338
+ para crear una nueva. Reutilizar una orden impaga existente, y pedir una moneda
339
+ distinta a la suya, ahora se explican en lugar de parecer errores.
332
340
  - **0.1.2** — El Modo B ya no necesita una clave privada en bruto en una variable
333
341
  de entorno. En Solana usa el `~/.config/solana/id.json` que `solana-keygen` ya
334
342
  creó; en EVM un keystore V3 cifrado cuya frase de contraseña se solicita.
package/docs/README.ja.md CHANGED
@@ -33,7 +33,7 @@ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
33
33
  | Polygon | `usdt-polygon` `usdc-polygon` | `137` | 小数点以下 6 桁 |
34
34
  | Base | `usdc-base` | `8453` | 小数点以下 6 桁 |
35
35
  | Solana | `usdt-solana` `usdc-solana` | `900` | SPL。ネイティブの SOL は非対応 |
36
- | Stellar | `usdc-stellar` | `1500` | メモが必須 — 入金ブロックに表示されます |
36
+ | Stellar | `usdc-stellar` | `1500` | `MEMO_TEXT` のメモが必須 — 入金ブロックに表示されます |
37
37
  | Bitcoin Lightning | `btc-lightning` | `lightning` | BOLT11。金額は satoshi 単位 |
38
38
 
39
39
  ネイティブのガス通貨(SOL、BNB、ETH、MATIC)およびオンチェーンの BTC は受け付けません。
@@ -89,7 +89,7 @@ OpenRouter / Coinbase の決済リンクを支払うには、次を実行して
89
89
  npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
90
90
  ```
91
91
 
92
- ウォレット: どのウォレットでも構いません。**鍵は不要です。** Solana CLI の鍵ペアまたは暗号化された keystore を使う `--send` の場合だけ
92
+ ウォレット: どのウォレットでも構いません。**鍵は不要です。** Solana CLI の鍵ペアまたは暗号化された keystore を使う `--send`(EVM チェーンと Solana のみ、Stellar と Lightning はモード A 専用)の場合だけ
93
93
  環境変数の鍵が必要です。
94
94
  </details>
95
95
 
@@ -320,6 +320,13 @@ WalletConnect 専用のモバイルウォレット、取引所アカウント。
320
320
 
321
321
  ## 変更履歴
322
322
 
323
+ - **0.1.3** — 最初の実際の支払いで見つかった不具合の修正。ビルド済みバンドルが Node 22 以降で
324
+ `__filename is not defined` により停止しなくなりました(esbuild の banner が `require` に加えて
325
+ `__filename`/`__dirname` も定義し、テストが各バンドルを実際に実行するようになりました)。Stellar の
326
+ 入金では memo の種類(`MEMO_TEXT`。memo が数字に見える場合も同様)を明示します。注文の残り有効時間を
327
+ 入金ブロックと `status` の両方で継続時間として表示し("expires in 47m")、期限切れ時には新しい注文を
328
+ 作るコマンドをそのまま示します。既存の未払い注文の再利用と、それと異なる通貨を指定した場合の双方を、
329
+ エラーではなく説明として提示します。
323
330
  - **0.1.2** — モード B で環境変数に生の秘密鍵を置く必要がなくなりました。Solana では
324
331
  `solana-keygen` が既に作成した `~/.config/solana/id.json` を、EVM では暗号化された
325
332
  V3 keystore(パスフレーズは対話的に入力)を使います。`--keyfile` でどちらも明示でき、
package/docs/README.zh.md CHANGED
@@ -30,7 +30,7 @@ npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
30
30
  | Polygon | `usdt-polygon` `usdc-polygon` | `137` | 6 位小数 |
31
31
  | Base | `usdc-base` | `8453` | 6 位小数 |
32
32
  | Solana | `usdt-solana` `usdc-solana` | `900` | SPL;不支持原生 SOL |
33
- | Stellar | `usdc-stellar` | `1500` | 必须带 memo —— 会在充值信息块里给出 |
33
+ | Stellar | `usdc-stellar` | `1500` | 必须带 `MEMO_TEXT` memo —— 会在充值信息块里给出 |
34
34
  | Bitcoin Lightning | `btc-lightning` | `lightning` | BOLT11;金额单位为聪 |
35
35
 
36
36
  原生 gas 币(SOL、BNB、ETH、MATIC)以及链上 BTC 均不接受。
@@ -82,7 +82,7 @@ Codex 会读取项目根目录的 `AGENTS.md`。加一条常驻指令,它就
82
82
  npx @rozoai/checkout pay <coinbase-link> --with usdt-solana
83
83
  ```
84
84
 
85
- 钱包:任意钱包,**无需私钥**。只有 `--send` 需要,它用你的 Solana CLI 密钥对或加密 keystore 在本地签名。
85
+ 钱包:任意钱包,**无需私钥**。只有 `--send` 需要,它用你的 Solana CLI 密钥对或加密 keystore 在本地签名;仅支持 EVM 链和 Solana —— Stellar 与闪电网络只能用模式 A。
86
86
  </details>
87
87
 
88
88
  <details>
@@ -292,6 +292,12 @@ echo '.env' >> .gitignore
292
292
 
293
293
  ## 更新日志
294
294
 
295
+ - **0.1.3** —— 第一笔真实付款暴露出来的问题修复。构建产物在 Node 22+ 上不再因
296
+ `__filename is not defined` 崩溃(esbuild banner 现在同时注入 `__filename`/`__dirname`
297
+ 和 `require`,并且测试会真正执行每一个构建产物)。Stellar 充值现在会明确标出 memo
298
+ 类型(`MEMO_TEXT`,即使 memo 看起来是纯数字)。订单在充值信息块和 `status` 里都会以
299
+ 时长显示剩余有效期("expires in 47m"),过期时给出重新下单的完整命令。复用已有的未付
300
+ 订单、以及所选币种与已有订单不一致这两种情况,现在都会被解释清楚,而不是看起来像报错。
295
301
  - **0.1.2** —— 模式 B 不再需要把原始私钥放进环境变量。Solana 直接用 `solana-keygen`
296
302
  已经写好的 `~/.config/solana/id.json`;EVM 用加密的 V3 keystore,口令交互式提示输入。
297
303
  `--keyfile` 可以显式指定其中任一种,相关设置也可以放进已 gitignore 的 `.env`。
@@ -0,0 +1,77 @@
1
+ # Review history
2
+
3
+ [← back to the README](../README.md) · [Safety design](safety.md)
4
+
5
+ This tool moves other people's money. It was reviewed adversarially before it
6
+ was written, again after it was written, and again after the first real payment.
7
+ This page is the record of that.
8
+
9
+ ## Design review — 3 rounds, before any code existed
10
+
11
+ The design was written as a plan document and reviewed by an independent model
12
+ with a standing instruction to hunt for anything that could lose funds. No code
13
+ was written until the plan passed with no P0 findings.
14
+
15
+ | Round | Verdict |
16
+ |---|---|
17
+ | 1 | 6 P0, 7 P1, 2 P2 — plan revised |
18
+ | 2 | still had P0s: several round-1 fixes were incomplete, plus one new P0 — plan revised again |
19
+ | 3 | no P0 — implementation began |
20
+
21
+ The P0s were about the plan being wrong regarding the payment rails, not about
22
+ style. Among them: the reuse rule was mis-stated (an existing order is reused
23
+ whenever it is merely unexpired, not only when it is unpaid); the binding
24
+ confirmation was placed before the deposit details existed, so it could not
25
+ bind them; and the payment link could be consumed by another payer between the
26
+ quote and the signature, which needed a re-check immediately before paying.
27
+
28
+ ## Code review — 2 rounds, after implementation
29
+
30
+ | Round | Verdict |
31
+ |---|---|
32
+ | 1 | 8 P0, 10 P1, 5 P2 |
33
+ | 2 | 20 of 23 resolved; 3 residual findings, then fixed |
34
+
35
+ The round-1 P0s were the interesting ones, and each is now a real code path
36
+ with its own error code and tests:
37
+
38
+ - the confirmation gate and the `--send` opt-in were documented but not
39
+ actually enforced
40
+ - the send-once claim was a check-then-act race that two concurrent processes
41
+ could both pass
42
+ - an unreadable `amountReceived` was treated as "no money received" rather than
43
+ as money
44
+ - the post-create comparison ignored security-critical fields when they were
45
+ simply absent
46
+ - payability was not re-proved immediately before signing, and incomplete
47
+ upstream state read as payable
48
+ - deposit instructions were not validated for completeness before being shown
49
+ - provider errors could leak credential-bearing URLs
50
+ - the tracked-secret check failed open when it could not consult git
51
+
52
+ ## First real payment
53
+
54
+ A live payment then settled in about a minute — and surfaced four more defects,
55
+ all fixed in 0.1.3:
56
+
57
+ - the built bundles crashed on newer Node because the bundler's CommonJS shim
58
+ was incomplete; it had never been caught because only `--help` was ever run
59
+ against a built bundle. The test suite now executes every bundle.
60
+ - the Stellar memo type was not stated anywhere, and sending that memo with the
61
+ wrong type loses the payment. It is `MEMO_TEXT`, and the deposit block now
62
+ says so.
63
+ - reusing an existing unpaid order, and asking for a coin that differs from it,
64
+ both read as errors rather than as the ordinary situations they are
65
+ - nothing showed how long an order had left, and a real payment nearly missed
66
+ its window
67
+
68
+ ## What this means for a reader
69
+
70
+ Every finding above is closed, and the behaviours they produced are covered by
71
+ the test suite, which runs entirely offline against recorded fixtures. The full
72
+ list of what this tool refuses to do, and why, is in
73
+ [docs/safety.md](safety.md).
74
+
75
+ The detailed review transcripts are kept internally; they quote source from
76
+ private repositories and so are not published here. The findings themselves are
77
+ summarised above in full — nothing material is omitted.
package/llms.txt CHANGED
@@ -54,6 +54,8 @@ Where the material comes from:
54
54
  `cast wallet import <name> --interactive` writes a V3 keystore to
55
55
  ~/.foundry/keystores/<name>; `geth account import` also writes one. Browser
56
56
  wallets do not export keystores, only raw keys.
57
+ - --send supports EVM chains and Solana ONLY. Stellar and Lightning are paid
58
+ from the user's own wallet (Mode A); there is no local signing for them.
57
59
  - Hardware wallets, WalletConnect-only wallets and exchange accounts CANNOT be
58
60
  used with --send. Those users take the default keyless path, which works with
59
61
  any wallet.
@@ -108,7 +110,11 @@ private key (EVM and Solana only); every other path is keyless.
108
110
  Pay EXACTLY source.amount of the requested token on the requested chain to
109
111
  source.receiverAddress, including every other field the block carries (Stellar
110
112
  routes on a shared hub address plus source.receiverMemo, so omitting the memo
111
- loses the payment).
113
+ loses the payment). The Stellar memo is ALWAYS MEMO_TEXT, even when it is all
114
+ digits (e.g. 65371582) — sending it as MEMO_ID produces a different memo and
115
+ the payment will not match. The deposit block reports this as
116
+ receiverMemoType. Orders expire: deposit.expiresIn / status expiry.expiresIn
117
+ give the remaining validity as a duration.
112
118
  For Lightning, pay the BOLT11 in source.lnInvoice (receiverAddress is empty).
113
119
 
114
120
  4) Poll until settled:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rozoai/checkout",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "type": "module",
5
5
  "description": "Pay an OpenRouter Coinbase Payment Link with BTC Lightning, or USDT/USDC on Solana, BNB Chain, Ethereum, Polygon, Base or Stellar.",
6
6
  "license": "MIT",