@rozoai/checkout 0.1.11 → 0.1.14
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 +26 -0
- package/llms.txt +30 -1
- package/package.json +1 -1
- package/scripts/dist/cli.js +829 -78
- package/scripts/dist/create-order.js +78 -5
- package/scripts/dist/quote.js +12 -2
- package/scripts/dist/send-evm.js +111 -14
- package/scripts/dist/send-sol.js +111 -14
- package/scripts/dist/status.js +171 -20
package/README.md
CHANGED
|
@@ -40,6 +40,14 @@ prompt and it will mark which coins you can actually afford — then prints a
|
|
|
40
40
|
deposit address for you to pay from any wallet — **no private key, no environment variable, no
|
|
41
41
|
configuration** — and waits until the invoice is settled.
|
|
42
42
|
|
|
43
|
+
Paying a **Bitrefill** invoice instead? Create it on Bitrefill with "USDC on
|
|
44
|
+
Base", then pass its id, address and amount (Coinbase payment links and
|
|
45
|
+
Bitrefill invoices are the two supported targets; Stripe is not):
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npx @rozoai/checkout pay --bitrefill-invoice <id> --to <0x…> --amount 7.90 --expires-at <ISO> --with usdc-stellar
|
|
49
|
+
```
|
|
50
|
+
|
|
43
51
|
Know your coin already? Skip the question:
|
|
44
52
|
|
|
45
53
|
```bash
|
|
@@ -108,6 +116,12 @@ the optional `--send` flag signs locally: on Solana it uses the
|
|
|
108
116
|
encrypted JSON keystore whose passphrase is prompted. A raw key in the
|
|
109
117
|
environment (or a gitignored `.env`) still works for unattended automation.
|
|
110
118
|
|
|
119
|
+
Distributing this CLI? `--utm-source <label>` (or `ROZO_CHECKOUT_UTM_SOURCE`) is an optional channel label for reporting; no identity, no privilege.
|
|
120
|
+
|
|
121
|
+
Want ROZO to be able to reach you if a payment needs attention? Add the optional `--email you@example.com` to `pay`.
|
|
122
|
+
|
|
123
|
+
Need help? Email hi@rozo.ai, or reach us on [X](https://x.com/ROZOai) or [Discord](https://discord.gg/EfWejgTbuU).
|
|
124
|
+
|
|
111
125
|
<details>
|
|
112
126
|
<summary><b>Set up a local wallet for <code>--send</code></b> — .env template and per-wallet export steps</summary>
|
|
113
127
|
|
|
@@ -386,6 +400,18 @@ The full list of what this refuses to do, and why, is in
|
|
|
386
400
|
|
|
387
401
|
## Changelog
|
|
388
402
|
|
|
403
|
+
- **0.1.14**: optional `--email <addr>` on `pay` (and on the create-order
|
|
404
|
+
scripts) stores a contact email with the order so ROZO can reach you if the
|
|
405
|
+
payment needs attention. Never required; an invalid address is rejected
|
|
406
|
+
before any order is created. Support channels (hi@rozo.ai, X, Discord) are
|
|
407
|
+
shown at order creation and whenever an order is not clean.
|
|
408
|
+
- **0.1.13**: optional `--utm-source <label>` / `ROZO_CHECKOUT_UTM_SOURCE`
|
|
409
|
+
adds `attribution.utm_source` to created orders so distribution channels can
|
|
410
|
+
be measured. Invalid values are dropped, never failing an order.
|
|
411
|
+
- **0.1.12**: pay Bitrefill invoices. `pay --bitrefill-invoice <id> --to <0x…>
|
|
412
|
+
--amount <USDC> --expires-at <ISO>` creates a Rozo exactOut order through
|
|
413
|
+
mpprouter that delivers the exact USDC on Base straight to the Bitrefill
|
|
414
|
+
invoice address, payable from Stellar USDC or any supported coin.
|
|
389
415
|
- **0.1.11**: each order now carries `attribution.client`
|
|
390
416
|
(`rozo-checkout-skill/<version>`) so skill-created orders can be told apart
|
|
391
417
|
from the web checkout. Installable as a Claude Code plugin
|
package/llms.txt
CHANGED
|
@@ -25,6 +25,10 @@ calls with every safety rule already enforced:
|
|
|
25
25
|
usdc-ethereum, usdt-polygon, usdc-polygon, usdc-base, usdc-stellar, btc-lightning
|
|
26
26
|
(or raw: --chain 900 --token USDT).
|
|
27
27
|
|
|
28
|
+
Optional: --email <addr> stores a contact email with the order so ROZO can reach
|
|
29
|
+
the user if the payment needs attention. Ask the user once if they are present;
|
|
30
|
+
never required, proceed without it if they decline or no one is there.
|
|
31
|
+
|
|
28
32
|
DEFAULT PATH NEEDS NO KEY: `pay` prints a deposit address for the user to pay from
|
|
29
33
|
any wallet. No private key, no environment variable, no configuration. Only the
|
|
30
34
|
optional --send flag signs locally. Its key comes from the first source that
|
|
@@ -37,6 +41,22 @@ directory (or --env-file <path>): only ROZO_CHECKOUT_* keys are read from it, it
|
|
|
37
41
|
is parsed as text and never shell-evaluated, and the real environment wins.
|
|
38
42
|
Key files and .env must be chmod 600 and untracked by git.
|
|
39
43
|
|
|
44
|
+
## Bitrefill invoices
|
|
45
|
+
|
|
46
|
+
Also supported: a Bitrefill invoice created with "USDC on Base" (Stripe is not supported).
|
|
47
|
+
No quote step; mpprouter creates an exactOut order paying exactly that amount to the
|
|
48
|
+
Bitrefill address:
|
|
49
|
+
|
|
50
|
+
npx @rozoai/checkout pay --bitrefill-invoice <id> --to <0x…> --amount 7.90 --expires-at <ISO> --with usdc-stellar
|
|
51
|
+
|
|
52
|
+
Router call: POST {MPP}/create-invoice {"provider":"bitrefill","bitrefill":{"invoiceId","address",
|
|
53
|
+
"amount","expiresAt" (required, ≤30 min out)},"source":{"chainId","tokenSymbol"}}. Verify the response echoes the same
|
|
54
|
+
invoiceId/address/amount, and that GET payments/<rozoPaymentId> destination has the same
|
|
55
|
+
chain/token/address/amount (missing = mismatch), before showing the deposit or sending.
|
|
56
|
+
Expiry = the invoice expiry only; refuse to show/send under 2 min. 409 DUPLICATE_INVOICE returns
|
|
57
|
+
the existing rozoPaymentId: resume it. Settled = payment_payout_completed (or completed with a
|
|
58
|
+
payout tx hash). 503 BITREFILL_NOT_CONFIGURED / RETRY_LATER: nothing created, retry later.
|
|
59
|
+
|
|
40
60
|
## Local wallet setup for --send (not needed for the default keyless path)
|
|
41
61
|
|
|
42
62
|
.env keys (only ROZO_CHECKOUT_* are read; real env wins; chmod 600; gitignore):
|
|
@@ -101,6 +121,8 @@ private key (EVM and Solana only); every other path is keyless.
|
|
|
101
121
|
-d '{"url":"https://payments.coinbase.com/payment-links/pl_XXXX",
|
|
102
122
|
"source":{"chainId":"900","tokenSymbol":"USDT"}}'
|
|
103
123
|
-> { ok, reused, linkId, rozoPaymentId, paymentLink, expiresAt, source, ... }
|
|
124
|
+
Optional "email":"you@example.com" in the body stores a contact email with a
|
|
125
|
+
newly created order (a malformed value returns 400 INVALID_EMAIL).
|
|
104
126
|
WARNING: if an unexpired order already exists for this link it is REUSED as-is,
|
|
105
127
|
even with a different chain/token than you asked for. Always verify the returned
|
|
106
128
|
source matches your request; abort on mismatch.
|
|
@@ -146,4 +168,11 @@ private key (EVM and Solana only); every other path is keyless.
|
|
|
146
168
|
|
|
147
169
|
409 = link already used · 410 = link expired · UNSUPPORTED_SOURCE = the response's
|
|
148
170
|
"supported" object lists valid (chainId, tokenSymbol) pairs (Lightning is supported
|
|
149
|
-
but omitted from that list) · RATE_LIMITED = per-IP creation cap, retry later
|
|
171
|
+
but omitted from that list) · RATE_LIMITED = per-IP creation cap, retry later ·
|
|
172
|
+
INVALID_EMAIL = the optional email is malformed; fix it or omit it.
|
|
173
|
+
|
|
174
|
+
## Support
|
|
175
|
+
|
|
176
|
+
If an order is stuck or anything goes wrong: email hi@rozo.ai, X
|
|
177
|
+
https://x.com/ROZOai, Discord https://discord.gg/EfWejgTbuU. Include linkId,
|
|
178
|
+
rozoPaymentId and any tx hash.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rozoai/checkout",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Pay OpenRouter, or any Coinbase invoice, with the crypto you already hold: USDT/USDC on Solana, BNB Chain, Ethereum or Polygon, USDC on Base or Stellar, or BTC over Lightning. No Coinbase account.",
|
|
6
6
|
"license": "MIT",
|