@openreceive/node 0.4.17 → 0.4.19
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/dist/{chunk-LD7HMUY3.js → chunk-6XUDLYM6.js} +1 -7
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/skills/integrate-openreceive/references/btcpay.md +23 -1
- package/skills/integrate-openreceive/references/django.md +41 -1
- package/skills/integrate-openreceive/references/fastapi.md +42 -1
- package/skills/integrate-openreceive/references/fastify.md +42 -1
- package/skills/integrate-openreceive/references/laravel.md +41 -1
- package/skills/integrate-openreceive/references/next.md +47 -1
- package/skills/integrate-openreceive/references/node.md +46 -1
- package/skills/integrate-openreceive/references/php.md +41 -1
- package/skills/integrate-openreceive/references/rails.md +41 -1
- package/skills/integrate-openreceive/references/woocommerce.md +136 -34
|
@@ -491,8 +491,6 @@ function unwrapNwcResult(value) {
|
|
|
491
491
|
}
|
|
492
492
|
|
|
493
493
|
// src/nwc/transport.ts
|
|
494
|
-
import { createRequire } from "node:module";
|
|
495
|
-
import { pathToFileURL } from "node:url";
|
|
496
494
|
import { recordOrEmpty as recordOrEmpty2 } from "@openreceive/core";
|
|
497
495
|
|
|
498
496
|
// src/nwc/history-request.ts
|
|
@@ -567,7 +565,6 @@ async function historyRequest(client, params, signal) {
|
|
|
567
565
|
}
|
|
568
566
|
|
|
569
567
|
// src/nwc/transport.ts
|
|
570
|
-
var require2 = createRequire(import.meta.url);
|
|
571
568
|
async function callRequiredMethod(client, names, request, options) {
|
|
572
569
|
for (const name of names) {
|
|
573
570
|
const method = client[name];
|
|
@@ -582,10 +579,7 @@ async function callRequiredMethod(client, names, request, options) {
|
|
|
582
579
|
}
|
|
583
580
|
async function createDefaultAlbyNwcClient(connectionString) {
|
|
584
581
|
ensureNodeWebSocket();
|
|
585
|
-
const
|
|
586
|
-
const namespace = recordOrEmpty2(
|
|
587
|
-
await dynamicImport(pathToFileURL(require2.resolve("@getalby/sdk/nwc")).href)
|
|
588
|
-
);
|
|
582
|
+
const namespace = recordOrEmpty2(await import("@getalby/sdk/nwc"));
|
|
589
583
|
const Constructor = namespace.NWCClient;
|
|
590
584
|
if (typeof Constructor !== "function") {
|
|
591
585
|
throw new WalletPreflightError(
|
package/dist/cli.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
summarizeReconcilePass,
|
|
20
20
|
summarizeSwapProviderApiRequest,
|
|
21
21
|
summarizeSwapProviderApiResponse
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-6XUDLYM6.js";
|
|
23
23
|
|
|
24
24
|
// src/index.ts
|
|
25
25
|
import { OpenReceiveError as OpenReceiveError2 } from "@openreceive/core";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openreceive/node",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.19",
|
|
4
4
|
"description": "Accept Bitcoin Lightning payments in Node.js with your own wallet and optional USDT, USDC, SOL and ETH swaps.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bitcoin",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"types": "./dist/index.d.ts",
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@getalby/sdk": "^8.0.3",
|
|
20
|
-
"@openreceive/core": "0.4.
|
|
20
|
+
"@openreceive/core": "0.4.19"
|
|
21
21
|
},
|
|
22
22
|
"bin": {
|
|
23
23
|
"openreceive": "./bin/openreceive.mjs"
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
This is the full file; follow it from Step 0.
|
|
2
|
+
|
|
1
3
|
# OpenReceive agent directions (BTCPay Server)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
```sh
|
|
6
|
+
# READ THIS FIRST: this file is 12 KB and a summary drops required steps. Download it whole:
|
|
7
|
+
curl -fsSL https://openreceive.org/agent-directions/btcpay/full.md
|
|
8
|
+
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Step 0 in brief** (Step 0 below has the details):
|
|
12
|
+
|
|
13
|
+
- Check first: BTCPay Server 2.4.4 or later, and the plugin installed from Plugins → Plugin Directory.
|
|
14
|
+
- Unless the store already uses OpenReceive, stop and ask the user for a receive-only NWC code.
|
|
15
|
+
- Save it via Store → OpenReceive or the Greenfield API, never BTCPay's Lightning node screen. Never echo it.
|
|
16
|
+
- If the user wants USDT, USDC, ETH or SOL, ask for an LSC code too, but do not wait for it.
|
|
17
|
+
- Never tick the spend-capable override to make a save succeed.
|
|
18
|
+
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
19
|
+
|
|
20
|
+
These directions describe OpenReceive 0.4.19.
|
|
4
21
|
|
|
5
22
|
Connect a BTCPay Server store to a receive-only NWC wallet with the OpenReceive
|
|
6
23
|
plugin, and optionally let payers pay BTCPay invoices with USDT, USDC, ETH or
|
|
@@ -91,6 +108,8 @@ Only then start the quickstart.
|
|
|
91
108
|
database like every other BTCPay credential; never copy them into
|
|
92
109
|
screenshots, tickets, browser code or logs. The provider's order token never
|
|
93
110
|
leaves the server.
|
|
111
|
+
- Do not suggest rotating, revoking or replacing a code because it was pasted
|
|
112
|
+
into this chat; that is the supported path.
|
|
94
113
|
- BTCPay's `LightningListener` is the settlement authority. Provider
|
|
95
114
|
`completed` is not payment; only the wallet reporting the Lightning invoice
|
|
96
115
|
settled is. Do not build anything that fulfils on a provider state.
|
|
@@ -106,6 +125,9 @@ needing attention. On a regtest machine, `packages/dotnet/docker/up.sh` then
|
|
|
106
125
|
`e2e.sh` in the OpenReceive repository proves the whole path end to end, and
|
|
107
126
|
that is the only situation where cloning the repository is the right move.
|
|
108
127
|
|
|
128
|
+
Setup ends when the health check is clean. Say "Setup is finished" in one
|
|
129
|
+
message. Do not offer more work or end the message on a question.
|
|
130
|
+
|
|
109
131
|
## More documentation
|
|
110
132
|
|
|
111
133
|
Fetch one when the moment comes. Each is raw markdown, so a plain GET is
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
This is the full file; follow it from Step 0.
|
|
2
|
+
|
|
1
3
|
# OpenReceive agent directions (Django)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
```sh
|
|
6
|
+
# READ THIS FIRST: this file is 43 KB and a summary drops required steps. Download it whole:
|
|
7
|
+
curl -fsSL https://openreceive.org/agent-directions/django/full.md
|
|
8
|
+
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Step 0 in brief** (Step 0 below has the details):
|
|
12
|
+
|
|
13
|
+
- Before installing or editing anything, ask the user for a receive-only NWC code. One question per message.
|
|
14
|
+
- Next ask for the LSC code. If the user wants stablecoins, USDT, USDC, ETH, SOL or crypto, do not ask yes/no first.
|
|
15
|
+
- The user only pastes codes into this chat. Never ask them to edit .env or run a command to save one.
|
|
16
|
+
- Write each code into .env yourself, as Step 0 says. Never echo it or put it in a shell command.
|
|
17
|
+
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
|
+
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
|
+
|
|
20
|
+
These directions describe OpenReceive 0.4.19.
|
|
4
21
|
|
|
5
22
|
Add OpenReceive to a Django project — the app you are already working in. You
|
|
6
23
|
do not need a copy of the OpenReceive source: the Python package is on PyPI
|
|
@@ -135,6 +152,24 @@ in-place `pip install -U` is undone by the next `compose up`.
|
|
|
135
152
|
|
|
136
153
|
Only then start the quickstart.
|
|
137
154
|
|
|
155
|
+
## After the quickstart — hand over, then stop
|
|
156
|
+
|
|
157
|
+
The quickstart is done when `python manage.py openreceive_doctor` is clean and
|
|
158
|
+
this app serves the checkout page for one of its orders. Doctor names any
|
|
159
|
+
failed check and exits nonzero; fix it before going on.
|
|
160
|
+
|
|
161
|
+
Give the user that checkout link. The browser check in the quickstart's
|
|
162
|
+
"Render the checkout" section (payment-method icons, wallet logos, a pay
|
|
163
|
+
tutorial) is theirs: tell them what to look at, and do not run it yourself.
|
|
164
|
+
|
|
165
|
+
You cannot pay the invoice: the code is receive-only. Do not pay, settle or
|
|
166
|
+
mark an order paid, and do not look for a way to (a wallet control port, a
|
|
167
|
+
test endpoint, another wallet). If the user wants a real settlement test, they
|
|
168
|
+
pay on that link from their own wallet, and `on_paid` marks the order paid.
|
|
169
|
+
|
|
170
|
+
Setup ends here. Say "Setup is finished" in one message, with the link and
|
|
171
|
+
what to check. Do not offer more work or end the message on a question.
|
|
172
|
+
|
|
138
173
|
## Non-negotiables
|
|
139
174
|
|
|
140
175
|
The quickstart below has the code. These are the rules it cannot state for
|
|
@@ -145,6 +180,11 @@ itself, and they hold for every integration.
|
|
|
145
180
|
and not an association to `OpenReceivePayment`.
|
|
146
181
|
- Keep `NWC_URI` / `LSC_URI_*` server-only. Never put them in browser code,
|
|
147
182
|
logs, or assets.
|
|
183
|
+
- Do not suggest rotating, revoking or replacing a code because it was pasted
|
|
184
|
+
into this chat; that is the supported path.
|
|
185
|
+
- Work only in this application. Never read or run anything from another
|
|
186
|
+
project on this machine (its `node_modules`, tools or source), for any
|
|
187
|
+
reason. A browser and Playwright are not part of setup.
|
|
148
188
|
- The host owns the price. `amount_for` reads it from your own data;
|
|
149
189
|
reject payer-supplied amounts.
|
|
150
190
|
- `authorize` runs on every request, and the `resource` it receives is a
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
This is the full file; follow it from Step 0.
|
|
2
|
+
|
|
1
3
|
# OpenReceive agent directions (FastAPI)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
```sh
|
|
6
|
+
# READ THIS FIRST: this file is 37 KB and a summary drops required steps. Download it whole:
|
|
7
|
+
curl -fsSL https://openreceive.org/agent-directions/fastapi/full.md
|
|
8
|
+
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Step 0 in brief** (Step 0 below has the details):
|
|
12
|
+
|
|
13
|
+
- Before installing or editing anything, ask the user for a receive-only NWC code. One question per message.
|
|
14
|
+
- Next ask for the LSC code. If the user wants stablecoins, USDT, USDC, ETH, SOL or crypto, do not ask yes/no first.
|
|
15
|
+
- The user only pastes codes into this chat. Never ask them to edit .env or run a command to save one.
|
|
16
|
+
- Write each code into .env yourself, as Step 0 says. Never echo it or put it in a shell command.
|
|
17
|
+
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
|
+
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
|
+
|
|
20
|
+
These directions describe OpenReceive 0.4.19.
|
|
4
21
|
|
|
5
22
|
Add OpenReceive to a FastAPI application — the app you are already working in.
|
|
6
23
|
You do not need a copy of the OpenReceive source: the engine is on PyPI
|
|
@@ -128,6 +145,25 @@ saying why. Upgrade first.
|
|
|
128
145
|
|
|
129
146
|
Only then start the quickstart.
|
|
130
147
|
|
|
148
|
+
## After the quickstart — hand over, then stop
|
|
149
|
+
|
|
150
|
+
The quickstart is done when
|
|
151
|
+
`openreceive doctor --app <module>:app --url <app url>` is clean and this app
|
|
152
|
+
serves the checkout page for one of its orders. Doctor names any failed check
|
|
153
|
+
and exits nonzero; fix it before going on.
|
|
154
|
+
|
|
155
|
+
Give the user that checkout link. The browser check in the quickstart's step 6
|
|
156
|
+
(payment-method icons, wallet logos, a pay tutorial) is theirs: tell them what
|
|
157
|
+
to look at, and do not run it yourself.
|
|
158
|
+
|
|
159
|
+
You cannot pay the invoice: the code is receive-only. Do not pay, settle or
|
|
160
|
+
mark an order paid, and do not look for a way to (a wallet control port, a
|
|
161
|
+
test endpoint, another wallet). If the user wants a real settlement test, they
|
|
162
|
+
pay on that link from their own wallet, and `on_paid` marks the order paid.
|
|
163
|
+
|
|
164
|
+
Setup ends here. Say "Setup is finished" in one message, with the link and
|
|
165
|
+
what to check. Do not offer more work or end the message on a question.
|
|
166
|
+
|
|
131
167
|
## Non-negotiables
|
|
132
168
|
|
|
133
169
|
The quickstart below has the code. These are the rules it cannot state for
|
|
@@ -138,6 +174,11 @@ itself, and they hold for every integration.
|
|
|
138
174
|
and not a Prisma/Drizzle relation to `openreceive_payments`.
|
|
139
175
|
- Keep `NWC_URI` / `LSC_URI_*` server-only. Never put them in browser code,
|
|
140
176
|
logs, or assets.
|
|
177
|
+
- Do not suggest rotating, revoking or replacing a code because it was pasted
|
|
178
|
+
into this chat; that is the supported path.
|
|
179
|
+
- Work only in this application. Never read or run anything from another
|
|
180
|
+
project on this machine (its `node_modules`, tools or source), for any
|
|
181
|
+
reason. A browser and Playwright are not part of setup.
|
|
141
182
|
- The host owns the price. `amount_for` reads it from your own data; reject
|
|
142
183
|
payer-supplied amounts.
|
|
143
184
|
- `authorize` runs on every request, and the `resource` it receives is a CLAIM
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
This is the full file; follow it from Step 0.
|
|
2
|
+
|
|
1
3
|
# OpenReceive agent directions (Fastify)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
```sh
|
|
6
|
+
# READ THIS FIRST: this file is 36 KB and a summary drops required steps. Download it whole:
|
|
7
|
+
curl -fsSL https://openreceive.org/agent-directions/fastify/full.md
|
|
8
|
+
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Step 0 in brief** (Step 0 below has the details):
|
|
12
|
+
|
|
13
|
+
- Before installing or editing anything, ask the user for a receive-only NWC code. One question per message.
|
|
14
|
+
- Next ask for the LSC code. If the user wants stablecoins, USDT, USDC, ETH, SOL or crypto, do not ask yes/no first.
|
|
15
|
+
- The user only pastes codes into this chat. Never ask them to edit .env or run a command to save one.
|
|
16
|
+
- Write each code into .env yourself, as Step 0 says. Never echo it or put it in a shell command.
|
|
17
|
+
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
|
+
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
|
+
|
|
20
|
+
These directions describe OpenReceive 0.4.19.
|
|
4
21
|
|
|
5
22
|
Add OpenReceive to a Fastify application — the app you are already working in.
|
|
6
23
|
You do not need a copy of the OpenReceive source: the packages are on npm, and
|
|
@@ -121,6 +138,25 @@ first.
|
|
|
121
138
|
|
|
122
139
|
Only then start the quickstart.
|
|
123
140
|
|
|
141
|
+
## After the quickstart — hand over, then stop
|
|
142
|
+
|
|
143
|
+
The quickstart is done when
|
|
144
|
+
`npx openreceive doctor --db <file-or-url> --url <app url>` is clean and this
|
|
145
|
+
app serves the checkout page for one of its orders. Doctor names any failed
|
|
146
|
+
check and exits nonzero; fix it before going on.
|
|
147
|
+
|
|
148
|
+
Give the user that checkout link. The browser check in the quickstart's step 6
|
|
149
|
+
(payment-method icons, wallet logos, a pay tutorial) is theirs: tell them what
|
|
150
|
+
to look at, and do not run it yourself.
|
|
151
|
+
|
|
152
|
+
You cannot pay the invoice: the code is receive-only. Do not pay, settle or
|
|
153
|
+
mark an order paid, and do not look for a way to (a wallet control port, a
|
|
154
|
+
test endpoint, another wallet). If the user wants a real settlement test, they
|
|
155
|
+
pay on that link from their own wallet, and `onPaid` marks the order paid.
|
|
156
|
+
|
|
157
|
+
Setup ends here. Say "Setup is finished" in one message, with the link and
|
|
158
|
+
what to check. Do not offer more work or end the message on a question.
|
|
159
|
+
|
|
124
160
|
## Non-negotiables
|
|
125
161
|
|
|
126
162
|
The quickstart below has the code. These are the rules it cannot state for
|
|
@@ -131,6 +167,11 @@ itself, and they hold for every integration.
|
|
|
131
167
|
and not a Prisma/Drizzle relation to `openreceive_payments`.
|
|
132
168
|
- Keep `NWC_URI` / `LSC_URI_*` server-only. Never put them in browser code,
|
|
133
169
|
logs, or assets.
|
|
170
|
+
- Do not suggest rotating, revoking or replacing a code because it was pasted
|
|
171
|
+
into this chat; that is the supported path.
|
|
172
|
+
- Work only in this application. Never read or run anything from another
|
|
173
|
+
project on this machine (its `node_modules`, tools or source), for any
|
|
174
|
+
reason. A browser and Playwright are not part of setup.
|
|
134
175
|
- The host owns the price. `amountFor` reads it from your own data; reject
|
|
135
176
|
payer-supplied amounts.
|
|
136
177
|
- `authorize` runs on every request, and the `resource` it receives is a CLAIM
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
This is the full file; follow it from Step 0.
|
|
2
|
+
|
|
1
3
|
# OpenReceive agent directions (Laravel)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
```sh
|
|
6
|
+
# READ THIS FIRST: this file is 42 KB and a summary drops required steps. Download it whole:
|
|
7
|
+
curl -fsSL https://openreceive.org/agent-directions/laravel/full.md
|
|
8
|
+
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Step 0 in brief** (Step 0 below has the details):
|
|
12
|
+
|
|
13
|
+
- Before installing or editing anything, ask the user for a receive-only NWC code. One question per message.
|
|
14
|
+
- Next ask for the LSC code. If the user wants stablecoins, USDT, USDC, ETH, SOL or crypto, do not ask yes/no first.
|
|
15
|
+
- The user only pastes codes into this chat. Never ask them to edit .env or run a command to save one.
|
|
16
|
+
- Write each code into .env yourself, as Step 0 says. Never echo it or put it in a shell command.
|
|
17
|
+
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
|
+
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
|
+
|
|
20
|
+
These directions describe OpenReceive 0.4.19.
|
|
4
21
|
|
|
5
22
|
Add OpenReceive to a Laravel application — the app you are already working in.
|
|
6
23
|
You do not need a copy of the OpenReceive source: the package is on Packagist
|
|
@@ -126,6 +143,24 @@ in-place `composer update` is undone by the next `compose up`.
|
|
|
126
143
|
|
|
127
144
|
Only then start the quickstart.
|
|
128
145
|
|
|
146
|
+
## After the quickstart — hand over, then stop
|
|
147
|
+
|
|
148
|
+
The quickstart is done when `php artisan openreceive:doctor` is clean and this
|
|
149
|
+
app serves the checkout page for one of its orders. Doctor names any failed
|
|
150
|
+
check; fix it before going on.
|
|
151
|
+
|
|
152
|
+
Give the user that checkout link. The browser check in the quickstart's
|
|
153
|
+
"Render the checkout" section (payment-method icons, wallet logos, a pay
|
|
154
|
+
tutorial) is theirs: tell them what to look at, and do not run it yourself.
|
|
155
|
+
|
|
156
|
+
You cannot pay the invoice: the code is receive-only. Do not pay, settle or
|
|
157
|
+
mark an order paid, and do not look for a way to (a wallet control port, a
|
|
158
|
+
test endpoint, another wallet). If the user wants a real settlement test, they
|
|
159
|
+
pay on that link from their own wallet, and `onPaid` marks the order paid.
|
|
160
|
+
|
|
161
|
+
Setup ends here. Say "Setup is finished" in one message, with the link and
|
|
162
|
+
what to check. Do not offer more work or end the message on a question.
|
|
163
|
+
|
|
129
164
|
## Non-negotiables
|
|
130
165
|
|
|
131
166
|
The quickstart below has the code. These are the rules it cannot state for
|
|
@@ -136,6 +171,11 @@ itself, and they hold for every integration.
|
|
|
136
171
|
and not an Eloquent model over `openreceive_payments`.
|
|
137
172
|
- Keep `NWC_URI` / `LSC_URI_*` server-only. Never put them in browser code,
|
|
138
173
|
logs, or assets.
|
|
174
|
+
- Do not suggest rotating, revoking or replacing a code because it was pasted
|
|
175
|
+
into this chat; that is the supported path.
|
|
176
|
+
- Work only in this application. Never read or run anything from another
|
|
177
|
+
project on this machine (its `node_modules`, tools or source), for any
|
|
178
|
+
reason. A browser and Playwright are not part of setup.
|
|
139
179
|
- The host owns the price. `amountFor` reads it from your own data; reject
|
|
140
180
|
payer-supplied amounts.
|
|
141
181
|
- `authorize` runs on every request, and the `resource` it receives is a CLAIM
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
This is the full file; follow it from Step 0.
|
|
2
|
+
|
|
1
3
|
# OpenReceive agent directions (Next.js)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
```sh
|
|
6
|
+
# READ THIS FIRST: this file is 38 KB and a summary drops required steps. Download it whole:
|
|
7
|
+
curl -fsSL https://openreceive.org/agent-directions/next/full.md
|
|
8
|
+
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Step 0 in brief** (Step 0 below has the details):
|
|
12
|
+
|
|
13
|
+
- Before installing or editing anything, ask the user for a receive-only NWC code. One question per message.
|
|
14
|
+
- Next ask for the LSC code. If the user wants stablecoins, USDT, USDC, ETH, SOL or crypto, do not ask yes/no first.
|
|
15
|
+
- The user only pastes codes into this chat. Never ask them to edit .env.local or run a command to save one.
|
|
16
|
+
- Write each code into .env.local yourself, as Step 0 says. Never echo it or put it in a shell command.
|
|
17
|
+
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
|
+
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
|
+
|
|
20
|
+
These directions describe OpenReceive 0.4.19.
|
|
4
21
|
|
|
5
22
|
Add OpenReceive to a Next.js App Router application — the app you are already
|
|
6
23
|
working in. You do not need a copy of the OpenReceive source: the packages are
|
|
@@ -47,6 +64,11 @@ there and non-empty, and never print the values. A code that is already
|
|
|
47
64
|
set is not asked for again; if both are set, skip to step 5
|
|
48
65
|
(making the server load the file), then the quickstart.
|
|
49
66
|
|
|
67
|
+
On a hosted builder (v0, Vercel, Replit, Lovable), the user may say instead
|
|
68
|
+
that both codes are already set as the project's environment variables or
|
|
69
|
+
secrets. Believe them: do not ask for the codes, do not write `.env.local`, and
|
|
70
|
+
do not read or print the variables. Next reads them from the environment.
|
|
71
|
+
|
|
50
72
|
Otherwise your next action is a question to the user. Do not install packages,
|
|
51
73
|
edit the app, write `.env.example`, or search anywhere else before asking
|
|
52
74
|
it. Do not read deploy config (compose files, Vercel or platform secrets), Docker containers, or process environments, and never run
|
|
@@ -121,6 +143,25 @@ first.
|
|
|
121
143
|
|
|
122
144
|
Only then start the quickstart.
|
|
123
145
|
|
|
146
|
+
## After the quickstart — hand over, then stop
|
|
147
|
+
|
|
148
|
+
The quickstart is done when
|
|
149
|
+
`npx openreceive doctor --db <file-or-url> --url <app url>` is clean and this
|
|
150
|
+
app serves the checkout page for one of its orders. Doctor names any failed
|
|
151
|
+
check and exits nonzero; fix it before going on.
|
|
152
|
+
|
|
153
|
+
Give the user that checkout link. The browser check in the quickstart's step 6
|
|
154
|
+
(payment-method icons, wallet logos, a pay tutorial) is theirs: tell them what
|
|
155
|
+
to look at, and do not run it yourself.
|
|
156
|
+
|
|
157
|
+
You cannot pay the invoice: the code is receive-only. Do not pay, settle or
|
|
158
|
+
mark an order paid, and do not look for a way to (a wallet control port, a
|
|
159
|
+
test endpoint, another wallet). If the user wants a real settlement test, they
|
|
160
|
+
pay on that link from their own wallet, and `onPaid` marks the order paid.
|
|
161
|
+
|
|
162
|
+
Setup ends here. Say "Setup is finished" in one message, with the link and
|
|
163
|
+
what to check. Do not offer more work or end the message on a question.
|
|
164
|
+
|
|
124
165
|
## Non-negotiables
|
|
125
166
|
|
|
126
167
|
The quickstart below has the code. These are the rules it cannot state for
|
|
@@ -131,6 +172,11 @@ itself, and they hold for every integration.
|
|
|
131
172
|
and not a Prisma/Drizzle relation to `openreceive_payments`.
|
|
132
173
|
- Keep `NWC_URI` / `LSC_URI_*` server-only. Never put them in browser code,
|
|
133
174
|
logs, or assets.
|
|
175
|
+
- Do not suggest rotating, revoking or replacing a code because it was pasted
|
|
176
|
+
into this chat; that is the supported path.
|
|
177
|
+
- Work only in this application. Never read or run anything from another
|
|
178
|
+
project on this machine (its `node_modules`, tools or source), for any
|
|
179
|
+
reason. A browser and Playwright are not part of setup.
|
|
134
180
|
- The host owns the price. `amountFor` reads it from your own data; reject
|
|
135
181
|
payer-supplied amounts.
|
|
136
182
|
- `authorize` runs on every request, and the `resource` it receives is a CLAIM
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
This is the full file; follow it from Step 0.
|
|
2
|
+
|
|
1
3
|
# OpenReceive agent directions (Node.js)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
```sh
|
|
6
|
+
# READ THIS FIRST: this file is 34 KB and a summary drops required steps. Download it whole:
|
|
7
|
+
curl -fsSL https://openreceive.org/agent-directions/node/full.md
|
|
8
|
+
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Step 0 in brief** (Step 0 below has the details):
|
|
12
|
+
|
|
13
|
+
- Before installing or editing anything, ask the user for a receive-only NWC code. One question per message.
|
|
14
|
+
- Next ask for the LSC code. If the user wants stablecoins, USDT, USDC, ETH, SOL or crypto, do not ask yes/no first.
|
|
15
|
+
- The user only pastes codes into this chat. Never ask them to edit .env or run a command to save one.
|
|
16
|
+
- Write each code into .env yourself, as Step 0 says. Never echo it or put it in a shell command.
|
|
17
|
+
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
|
+
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
|
+
|
|
20
|
+
These directions describe OpenReceive 0.4.19.
|
|
4
21
|
|
|
5
22
|
Add OpenReceive to a Node application — the app you are already working in. You
|
|
6
23
|
do not need a copy of the OpenReceive source: the packages are on npm, and the
|
|
@@ -44,6 +61,11 @@ there and non-empty, and never print the values. A code that is already
|
|
|
44
61
|
set is not asked for again; if both are set, skip to step 5
|
|
45
62
|
(making the server load the file), then the quickstart.
|
|
46
63
|
|
|
64
|
+
On a hosted builder (v0, Vercel, Replit, Lovable), the user may say instead
|
|
65
|
+
that both codes are already set as the project's environment variables or
|
|
66
|
+
secrets. Believe them: do not ask for the codes, do not write `.env`, and
|
|
67
|
+
do not read or print the variables. Skip step 5's file loading: the platform already puts them in `process.env`.
|
|
68
|
+
|
|
47
69
|
Otherwise your next action is a question to the user. Do not install packages,
|
|
48
70
|
edit the app, write `.env.example`, or search anywhere else before asking
|
|
49
71
|
it. Do not read deploy config (compose files, platform secrets), Docker containers, or process environments, and never run
|
|
@@ -118,6 +140,24 @@ first.
|
|
|
118
140
|
|
|
119
141
|
Only then start the quickstart.
|
|
120
142
|
|
|
143
|
+
## After the quickstart — hand over, then stop
|
|
144
|
+
|
|
145
|
+
The quickstart is done when `npx openreceive doctor --db <file-or-url> --url <app url>`
|
|
146
|
+
is clean and this app serves the checkout page for one of its orders. Doctor
|
|
147
|
+
names any failed check and exits nonzero; fix it before going on.
|
|
148
|
+
|
|
149
|
+
Give the user that checkout link. The browser check in the quickstart's
|
|
150
|
+
step 6 (payment-method icons, wallet logos, a pay tutorial) is theirs: tell
|
|
151
|
+
them what to look at, and do not run it yourself.
|
|
152
|
+
|
|
153
|
+
You cannot pay the invoice: the code is receive-only. Do not pay, settle or
|
|
154
|
+
mark an order paid, and do not look for a way to (a wallet control port, a
|
|
155
|
+
test endpoint, another wallet). If the user wants a real settlement test, they
|
|
156
|
+
pay on that link from their own wallet, and `onPaid` marks the order paid.
|
|
157
|
+
|
|
158
|
+
Setup ends here. Say "Setup is finished" in one message, with the link and
|
|
159
|
+
what to check. Do not offer more work or end the message on a question.
|
|
160
|
+
|
|
121
161
|
## Non-negotiables
|
|
122
162
|
|
|
123
163
|
The quickstart below has the code. These are the rules it cannot state for
|
|
@@ -128,6 +168,11 @@ itself, and they hold for every integration.
|
|
|
128
168
|
and not a Prisma/Drizzle relation to `openreceive_payments`.
|
|
129
169
|
- Keep `NWC_URI` / `LSC_URI_*` server-only. Never put them in browser code,
|
|
130
170
|
logs, or assets.
|
|
171
|
+
- Do not suggest rotating, revoking or replacing a code because it was pasted
|
|
172
|
+
into this chat; that is the supported path.
|
|
173
|
+
- Work only in this application. Never read or run anything from another
|
|
174
|
+
project on this machine (its `node_modules`, tools or source), for any
|
|
175
|
+
reason. A browser and Playwright are not part of setup.
|
|
131
176
|
- The host owns the price. `amountFor` reads it from your own data; reject
|
|
132
177
|
payer-supplied amounts.
|
|
133
178
|
- `authorize` runs on every request, and the `resource` it receives is a CLAIM
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
This is the full file; follow it from Step 0.
|
|
2
|
+
|
|
1
3
|
# OpenReceive agent directions (PHP)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
```sh
|
|
6
|
+
# READ THIS FIRST: this file is 38 KB and a summary drops required steps. Download it whole:
|
|
7
|
+
curl -fsSL https://openreceive.org/agent-directions/php/full.md
|
|
8
|
+
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Step 0 in brief** (Step 0 below has the details):
|
|
12
|
+
|
|
13
|
+
- Before installing or editing anything, ask the user for a receive-only NWC code. One question per message.
|
|
14
|
+
- Next ask for the LSC code. If the user wants stablecoins, USDT, USDC, ETH, SOL or crypto, do not ask yes/no first.
|
|
15
|
+
- The user only pastes codes into this chat. Never ask them to edit .env or run a command to save one.
|
|
16
|
+
- Write each code into .env yourself, as Step 0 says. Never echo it or put it in a shell command.
|
|
17
|
+
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
|
+
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
|
+
|
|
20
|
+
These directions describe OpenReceive 0.4.19.
|
|
4
21
|
|
|
5
22
|
Add OpenReceive to a PHP application — the app you are already working in. You
|
|
6
23
|
do not need a copy of the OpenReceive source: the engine is on Packagist
|
|
@@ -131,6 +148,24 @@ the image, so an in-place `composer update` is undone by the next
|
|
|
131
148
|
|
|
132
149
|
Only then start the quickstart.
|
|
133
150
|
|
|
151
|
+
## After the quickstart — hand over, then stop
|
|
152
|
+
|
|
153
|
+
The quickstart is done when the quickstart's `bin/doctor` script is clean and
|
|
154
|
+
this app serves the checkout page for one of its orders. Doctor names any
|
|
155
|
+
failed check; fix it before going on.
|
|
156
|
+
|
|
157
|
+
Give the user that checkout link. The browser check in the quickstart's step 6
|
|
158
|
+
(payment-method icons, wallet logos, a pay tutorial) is theirs: tell them what
|
|
159
|
+
to look at, and do not run it yourself.
|
|
160
|
+
|
|
161
|
+
You cannot pay the invoice: the code is receive-only. Do not pay, settle or
|
|
162
|
+
mark an order paid, and do not look for a way to (a wallet control port, a
|
|
163
|
+
test endpoint, another wallet). If the user wants a real settlement test, they
|
|
164
|
+
pay on that link from their own wallet, and `onPaid` marks the order paid.
|
|
165
|
+
|
|
166
|
+
Setup ends here. Say "Setup is finished" in one message, with the link and
|
|
167
|
+
what to check. Do not offer more work or end the message on a question.
|
|
168
|
+
|
|
134
169
|
## Non-negotiables
|
|
135
170
|
|
|
136
171
|
The quickstart below has the code. These are the rules it cannot state for
|
|
@@ -141,6 +176,11 @@ itself, and they hold for every integration.
|
|
|
141
176
|
and not a join to `openreceive_payments`.
|
|
142
177
|
- Keep `NWC_URI` / `LSC_URI_*` server-only. Never put them in browser code,
|
|
143
178
|
logs, or assets — and never in a `config.php` that ships in the repository.
|
|
179
|
+
- Do not suggest rotating, revoking or replacing a code because it was pasted
|
|
180
|
+
into this chat; that is the supported path.
|
|
181
|
+
- Work only in this application. Never read or run anything from another
|
|
182
|
+
project on this machine (its `node_modules`, tools or source), for any
|
|
183
|
+
reason. A browser and Playwright are not part of setup.
|
|
144
184
|
- The host owns the price. `amountFor` reads it from your own data; reject
|
|
145
185
|
payer-supplied amounts.
|
|
146
186
|
- `authorize` runs on every request, and the `resource` it receives is a CLAIM
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
This is the full file; follow it from Step 0.
|
|
2
|
+
|
|
1
3
|
# OpenReceive agent directions (Rails)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
```sh
|
|
6
|
+
# READ THIS FIRST: this file is 40 KB and a summary drops required steps. Download it whole:
|
|
7
|
+
curl -fsSL https://openreceive.org/agent-directions/rails/full.md
|
|
8
|
+
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Step 0 in brief** (Step 0 below has the details):
|
|
12
|
+
|
|
13
|
+
- Before installing or editing anything, ask the user for a receive-only NWC code. One question per message.
|
|
14
|
+
- Next ask for the LSC code. If the user wants stablecoins, USDT, USDC, ETH, SOL or crypto, do not ask yes/no first.
|
|
15
|
+
- The user only pastes codes into this chat. Never ask them to edit .env or run a command to save one.
|
|
16
|
+
- Write each code into .env yourself, as Step 0 says. Never echo it or put it in a shell command.
|
|
17
|
+
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
|
+
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
|
+
|
|
20
|
+
These directions describe OpenReceive 0.4.19.
|
|
4
21
|
|
|
5
22
|
Add OpenReceive to a Rails application — the app you are already working in. You
|
|
6
23
|
do not need a copy of the OpenReceive source: the gem is on RubyGems, the
|
|
@@ -122,6 +139,24 @@ is undone by the next `compose up`.
|
|
|
122
139
|
|
|
123
140
|
Only then start the quickstart.
|
|
124
141
|
|
|
142
|
+
## After the quickstart — hand over, then stop
|
|
143
|
+
|
|
144
|
+
The quickstart is done when `bin/rails openreceive:doctor` is clean and this
|
|
145
|
+
app serves the checkout page for one of its orders. Doctor names any failed
|
|
146
|
+
check; fix it before going on.
|
|
147
|
+
|
|
148
|
+
Give the user that checkout link. The browser check in the quickstart's
|
|
149
|
+
"Render the checkout" section (payment-method icons, wallet logos, a pay
|
|
150
|
+
tutorial) is theirs: tell them what to look at, and do not run it yourself.
|
|
151
|
+
|
|
152
|
+
You cannot pay the invoice: the code is receive-only. Do not pay, settle or
|
|
153
|
+
mark an order paid, and do not look for a way to (a wallet control port, a
|
|
154
|
+
test endpoint, another wallet). If the user wants a real settlement test, they
|
|
155
|
+
pay on that link from their own wallet, and `on_paid` marks the order paid.
|
|
156
|
+
|
|
157
|
+
Setup ends here. Say "Setup is finished" in one message, with the link and
|
|
158
|
+
what to check. Do not offer more work or end the message on a question.
|
|
159
|
+
|
|
125
160
|
## Non-negotiables
|
|
126
161
|
|
|
127
162
|
The quickstart below has the code. These are the rules it cannot state for
|
|
@@ -132,6 +167,11 @@ itself, and they hold for every integration.
|
|
|
132
167
|
and not an association to `OpenReceivePayment`.
|
|
133
168
|
- Keep `NWC_URI` / `LSC_URI_*` server-only. Never put them in browser code,
|
|
134
169
|
logs, or assets.
|
|
170
|
+
- Do not suggest rotating, revoking or replacing a code because it was pasted
|
|
171
|
+
into this chat; that is the supported path.
|
|
172
|
+
- Work only in this application. Never read or run anything from another
|
|
173
|
+
project on this machine (its `node_modules`, tools or source), for any
|
|
174
|
+
reason. A browser and Playwright are not part of setup.
|
|
135
175
|
- The host owns the price. `config.amount_for` reads it from your own data;
|
|
136
176
|
reject payer-supplied amounts.
|
|
137
177
|
- `config.authorize` runs on every request, and the `resource` it receives is a
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
This is the full file; follow it from Step 0.
|
|
2
|
+
|
|
1
3
|
# OpenReceive agent directions (WordPress + WooCommerce)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
```sh
|
|
6
|
+
# READ THIS FIRST: this file is 22 KB and a summary drops required steps. Download it whole:
|
|
7
|
+
curl -fsSL https://openreceive.org/agent-directions/woocommerce/full.md
|
|
8
|
+
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Step 0 in brief** (Step 0 below has the details):
|
|
12
|
+
|
|
13
|
+
- Before installing or editing anything, ask the user for a receive-only NWC code. One question per message.
|
|
14
|
+
- Next ask for the LSC code. If the user wants stablecoins, USDT, USDC, ETH, SOL or crypto, do not ask yes/no first.
|
|
15
|
+
- The user only pastes codes into this chat. Never ask them to run a command, edit a file or use an admin page.
|
|
16
|
+
- Store each code yourself as Step 2 says. Never put a code in a shell command.
|
|
17
|
+
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
|
+
- Setup is done only when the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
|
+
|
|
20
|
+
These directions describe OpenReceive 0.4.19.
|
|
4
21
|
|
|
5
22
|
Install and configure the OpenReceive payment gateway in the WooCommerce store
|
|
6
23
|
you are working in. Preserve its theme, checkout, customer accounts, order
|
|
@@ -32,8 +49,9 @@ for again; if both are set, skip to `wp openreceive configure --enable` at
|
|
|
32
49
|
the end of Step 2.
|
|
33
50
|
|
|
34
51
|
Otherwise your next action is a question to the user. Do not install the
|
|
35
|
-
plugin, edit Docker files or search anywhere else before asking it.
|
|
36
|
-
|
|
52
|
+
plugin, edit Docker files or search anywhere else before asking it. PHP
|
|
53
|
+
extensions, Docker images and the database wait until both codes are in this
|
|
54
|
+
chat, or the user said "Bitcoin only"; Step 1 covers them. Do not read wp-config.php, deploy config, container environments or other projects
|
|
37
55
|
looking for a code: a new store has neither code yet.
|
|
38
56
|
|
|
39
57
|
The user never runs a command and never edits a file. They paste each code
|
|
@@ -78,14 +96,16 @@ Install the plugin built for this release. Never install the GitHub
|
|
|
78
96
|
source-code ZIP or a ZIP from an older release:
|
|
79
97
|
|
|
80
98
|
```sh
|
|
81
|
-
wp plugin install https://github.com/OpenReceive/openreceive/releases/download/v0.4.
|
|
99
|
+
wp plugin install https://github.com/OpenReceive/openreceive/releases/download/v0.4.19/openreceive-wordpress-0.4.19.zip --activate
|
|
82
100
|
```
|
|
83
101
|
|
|
84
102
|
It needs WooCommerce active, and PHP 8.2+ with GMP and sodium in BOTH the web
|
|
85
103
|
PHP and the WP-CLI PHP. On the official `wordpress` and `wordpress:cli` Docker
|
|
86
104
|
images, activation fails with "OpenReceive requires the PHP sodium and GMP
|
|
87
105
|
extensions": add GMP to both images as "Enable GMP in both PHP runtimes" below
|
|
88
|
-
says, rebuild both, then install again. If the
|
|
106
|
+
says, rebuild both, then install again. If the Compose file has only `image:`
|
|
107
|
+
lines, use the two Dockerfiles and `build:` keys under "Compose files with only
|
|
108
|
+
`image:` lines" below, and add no other service. If the URL answers 404, build the same
|
|
89
109
|
tag as "Get the installable archive" below says.
|
|
90
110
|
|
|
91
111
|
## Step 2 — store the codes, then enable the gateway
|
|
@@ -113,7 +133,7 @@ secret workflow.
|
|
|
113
133
|
Then run `wp openreceive configure --enable` and `wp openreceive doctor`.
|
|
114
134
|
Doctor names any failed check and exits nonzero; fix it before going on.
|
|
115
135
|
|
|
116
|
-
## Step 3 — mint a test invoice
|
|
136
|
+
## Step 3 — mint a test invoice, then stop
|
|
117
137
|
|
|
118
138
|
Create a pending test order that pays with OpenReceive, then mint its
|
|
119
139
|
Lightning invoice from the terminal:
|
|
@@ -125,16 +145,44 @@ wp openreceive test-invoice <order id>
|
|
|
125
145
|
```
|
|
126
146
|
|
|
127
147
|
`test-invoice` goes through the same checkout route as the order-pay page. It
|
|
128
|
-
prints the amount in sats, the BOLT11 invoice
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
148
|
+
prints the amount in sats, the BOLT11 invoice, the order-pay link and the
|
|
149
|
+
methods that page offers, each swap asset marked available or followed by the
|
|
150
|
+
reason it is not. That reason is the answer; report it. "Below the provider
|
|
151
|
+
minimum" or "above the provider maximum" is about this order's amount, not a
|
|
152
|
+
fault: a small test order is often under a swap minimum. Only when the reason
|
|
153
|
+
says the provider is unreachable does doctor's "Swap provider" line have more
|
|
154
|
+
detail. `test-invoice` and `doctor` are the whole checkout check.
|
|
155
|
+
|
|
156
|
+
Give the user the order-pay link, which opens the checkout on this same
|
|
157
|
+
invoice, and the list of methods. Tell them the test order is theirs to delete.
|
|
158
|
+
|
|
159
|
+
You cannot pay the invoice: the code is receive-only. Do not pay, settle or
|
|
160
|
+
mark the order paid, and do not look for a way to (a wallet control port, a
|
|
161
|
+
test endpoint, another wallet). If the user wants a real settlement test, they
|
|
162
|
+
pay on the order-pay link from their own wallet; afterwards
|
|
163
|
+
`wp wc shop_order get <order id> --user=<admin user id> --field=status` is no
|
|
164
|
+
longer `pending`.
|
|
165
|
+
|
|
166
|
+
Setup ends here. Once doctor is clean and the user has the link, say that setup
|
|
167
|
+
is finished, in one message. Do not install mail software, add containers or
|
|
168
|
+
services, or set up cron. If doctor's "Reconcile scheduled" check fails, fix
|
|
169
|
+
that. On a store with little traffic, add one sentence to that message: a
|
|
170
|
+
system cron for WordPress scheduled work settles orders sooner, and this setup
|
|
171
|
+
does not add one. State it as a recommendation. Do not offer to set it up or
|
|
172
|
+
end the message on a question.
|
|
132
173
|
|
|
133
174
|
## Non-negotiables
|
|
134
175
|
|
|
135
176
|
- Never print, log or commit a code, never put one in a shell argument, and
|
|
136
177
|
never write one into source files, wp-config.php or browser code. Doctor's
|
|
137
178
|
set/unset is all you report.
|
|
179
|
+
- Do not suggest rotating, revoking or replacing a code because it was pasted
|
|
180
|
+
into this chat; that is the supported path.
|
|
181
|
+
- Work only in this store. Never read or run anything from another project or
|
|
182
|
+
directory on this machine (its `node_modules`, tools or source), for any
|
|
183
|
+
reason. A browser, Playwright, hand-made calls to the checkout's REST routes
|
|
184
|
+
and reading the plugin's source are not part of setup: when doctor or
|
|
185
|
+
`test-invoice` fails, report its output.
|
|
138
186
|
- Receive-only NWC is required. Never turn on the spend-capable override to
|
|
139
187
|
get past the preflight.
|
|
140
188
|
- The plugin owns only its payment-attempt tables in the WordPress database.
|
|
@@ -147,9 +195,11 @@ and tell them the test order is theirs to delete.
|
|
|
147
195
|
refund. https://openreceive.org/guides/swap-refunds.md
|
|
148
196
|
- A receive-only wallet cannot send merchant refunds. Refund a settled
|
|
149
197
|
payment manually from the wallet.
|
|
150
|
-
- Settlement runs on checkout requests and an every-minute scheduled job.
|
|
151
|
-
|
|
152
|
-
`wp openreceive notifications` is an optional long-running worker
|
|
198
|
+
- Settlement runs on checkout requests and an every-minute scheduled job. A
|
|
199
|
+
system cron for WordPress scheduled work helps a low-traffic store, and
|
|
200
|
+
`wp openreceive notifications` is an optional long-running worker: recommend
|
|
201
|
+
them, and set one up only when the user asks for it by name. "Go ahead" is
|
|
202
|
+
not that request.
|
|
153
203
|
|
|
154
204
|
## Further reading
|
|
155
205
|
|
|
@@ -165,8 +215,8 @@ and tell them the test order is theirs to delete.
|
|
|
165
215
|
|
|
166
216
|
## The quickstart, in full
|
|
167
217
|
|
|
168
|
-
Inlined verbatim so this file needs no network access
|
|
169
|
-
|
|
218
|
+
Inlined verbatim so this file needs no network access. Steps 0–3 above are the setup and this is their reference: where the two differ, the steps win, and its wp-admin screens are only for a store with no WP-CLI.
|
|
219
|
+
The page it comes from is https://openreceive.org/guides/quickstart-woocommerce.
|
|
170
220
|
|
|
171
221
|
## WordPress + WooCommerce quickstart
|
|
172
222
|
|
|
@@ -186,7 +236,7 @@ database or application.
|
|
|
186
236
|
|
|
187
237
|
### Get the installable archive
|
|
188
238
|
|
|
189
|
-
Download [openreceive-wordpress-0.4.
|
|
239
|
+
Download [openreceive-wordpress-0.4.19.zip](https://github.com/OpenReceive/openreceive/releases/download/v0.4.19/openreceive-wordpress-0.4.19.zip)
|
|
190
240
|
from the matching release. Historical releases may lack this asset. If that exact
|
|
191
241
|
URL returns 404, build the same tag below; never silently install an older ZIP.
|
|
192
242
|
The GitHub source-code ZIP is not an installable plugin. On a development machine
|
|
@@ -195,7 +245,7 @@ with Node 22+, PHP 8.2+ with GMP/sodium, Composer and WP-CLI:
|
|
|
195
245
|
```sh
|
|
196
246
|
git clone https://github.com/OpenReceive/openreceive.git
|
|
197
247
|
cd openreceive
|
|
198
|
-
git checkout v0.4.
|
|
248
|
+
git checkout v0.4.19
|
|
199
249
|
npm ci
|
|
200
250
|
npm run build:packages
|
|
201
251
|
composer install --working-dir=packages/php/wordpress
|
|
@@ -238,11 +288,58 @@ package matching the active PHP version (for example `php8.2-gmp` for PHP 8.2),
|
|
|
238
288
|
then restart that version's web PHP service. Verify `php --ri gmp` and
|
|
239
289
|
`wp openreceive doctor` for CLI, and the gateway Doctor panel for web PHP.
|
|
240
290
|
On managed WordPress hosting, ask the host to enable GMP and sodium in both
|
|
241
|
-
runtimes; if they cannot, this plugin cannot run there.
|
|
291
|
+
runtimes; if they cannot, this plugin cannot run there.
|
|
292
|
+
[WordPress hosting requirements](https://openreceive.org/guides/wordpress-hosting.md) lists what common hosts
|
|
293
|
+
offer and how to check your site. Do not use Composer's
|
|
242
294
|
`--ignore-platform-reqs` to bypass the requirements.
|
|
243
295
|
|
|
296
|
+
#### Compose files with only `image:` lines
|
|
297
|
+
|
|
298
|
+
Many stores run the official images straight from Compose, for example
|
|
299
|
+
`image: wordpress:php8.2-apache` and `image: wordpress:cli-php8.2`, with no
|
|
300
|
+
Dockerfile. Add two Dockerfiles next to `compose.yml`, keeping the tags your
|
|
301
|
+
`image:` lines had. The web image is Debian and runs as root:
|
|
302
|
+
|
|
303
|
+
```dockerfile
|
|
304
|
+
# wordpress.Dockerfile
|
|
305
|
+
FROM wordpress:php8.2-apache
|
|
306
|
+
RUN apt-get update && apt-get install -y --no-install-recommends libgmp-dev \
|
|
307
|
+
&& docker-php-ext-install gmp \
|
|
308
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
The CLI image is Alpine and runs as `www-data`:
|
|
312
|
+
|
|
313
|
+
```dockerfile
|
|
314
|
+
# wp-cli.Dockerfile
|
|
315
|
+
FROM wordpress:cli-php8.2
|
|
316
|
+
USER root
|
|
317
|
+
RUN apk add --no-cache gmp \
|
|
318
|
+
&& apk add --no-cache --virtual .gmp-build $PHPIZE_DEPS gmp-dev \
|
|
319
|
+
&& docker-php-ext-install gmp \
|
|
320
|
+
&& apk del .gmp-build
|
|
321
|
+
USER www-data
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
In `compose.yml`, replace each of those two `image:` lines with a `build:` key
|
|
325
|
+
and leave the rest of both services as they are:
|
|
326
|
+
|
|
327
|
+
```yaml
|
|
328
|
+
services:
|
|
329
|
+
wordpress:
|
|
330
|
+
build: { context: ., dockerfile: wordpress.Dockerfile }
|
|
331
|
+
cli:
|
|
332
|
+
build: { context: ., dockerfile: wp-cli.Dockerfile }
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
Then run `docker compose build wordpress cli` and `docker compose up -d wordpress`.
|
|
336
|
+
Use your own service names. Do not add any other service for this.
|
|
337
|
+
|
|
244
338
|
### Configure the wallet
|
|
245
339
|
|
|
340
|
+
On managed hosting with no shell or WP-CLI, use these admin screens. With WP-CLI,
|
|
341
|
+
use [Configure through WP-CLI](#configure-through-wp-cli) below instead.
|
|
342
|
+
|
|
246
343
|
1. Open **WooCommerce → Settings → Payments → OpenReceive**.
|
|
247
344
|
2. Enter a receive-only NWC code and save.
|
|
248
345
|
3. Enable the gateway.
|
|
@@ -277,7 +374,8 @@ backup. These commands share admin preflight and encrypted storage. Credential
|
|
|
277
374
|
flags accept only `-`; blank input leaves settings intact. Generic WooCommerce
|
|
278
375
|
REST and `wp wc payment_gateway` credential updates are rejected. `doctor`
|
|
279
376
|
reports the failed check with credentials redacted and exits nonzero on failure.
|
|
280
|
-
|
|
377
|
+
It also asks each configured swap provider for its asset list, and fails when a
|
|
378
|
+
provider does not answer or offers no assets. The default payment title becomes “Bitcoin & stablecoins (OpenReceive)” with swaps;
|
|
281
379
|
a customized title is preserved.
|
|
282
380
|
|
|
283
381
|
To check checkout from the terminal, mint an invoice for an unpaid order whose
|
|
@@ -291,7 +389,11 @@ wp openreceive test-invoice <order id>
|
|
|
291
389
|
|
|
292
390
|
`test-invoice` uses the same checkout route as the order-pay page. It prints the
|
|
293
391
|
amount in sats, the Lightning invoice and the order-pay link, which opens the
|
|
294
|
-
checkout on that invoice.
|
|
392
|
+
checkout on that invoice. It then lists the methods that page offers: Bitcoin
|
|
393
|
+
Lightning, plus each swap asset with its network and whether it is available
|
|
394
|
+
for this amount, with the reason when it is not. A small test order is often
|
|
395
|
+
below a provider's minimum; that is the order's amount, not a fault. Delete the
|
|
396
|
+
test order when you are done.
|
|
295
397
|
|
|
296
398
|
### Checkout and settlement
|
|
297
399
|
|
|
@@ -317,20 +419,20 @@ use that marker to finish it.
|
|
|
317
419
|
While the checkout polls for status, it also asks the PHP engine to check the
|
|
318
420
|
wallet for payments. The engine's shared database gate keeps these checks from
|
|
319
421
|
running too often. Action Scheduler adds a safety net that runs every minute.
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
wp openreceive
|
|
326
|
-
wp openreceive
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
The
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
422
|
+
WP-Cron only runs on page visits, so on a store with little traffic that safety
|
|
423
|
+
net waits for the next visitor. A system cron that runs WordPress scheduled
|
|
424
|
+
work settles those orders sooner. It is a recommendation for the store owner,
|
|
425
|
+
not a setup step.
|
|
426
|
+
|
|
427
|
+
`wp openreceive reconcile` runs one settlement pass and exits.
|
|
428
|
+
`wp openreceive notifications` is an optional long-running worker that settles
|
|
429
|
+
a payment as soon as the wallet reports it; run it under a process manager only
|
|
430
|
+
if you want that. Setup needs neither.
|
|
431
|
+
|
|
432
|
+
The Doctor panel in the gateway settings reports on the schema, whether
|
|
433
|
+
credentials are present, whether each swap provider answers, scheduling, and
|
|
434
|
+
orders that need attention. If the store currency has no usable price feed, the
|
|
435
|
+
gateway is unavailable.
|
|
334
436
|
|
|
335
437
|
### Refunds and removal
|
|
336
438
|
|