openreceive 0.4.28 → 0.4.30
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/lib/openreceive/version.rb +1 -1
- data/skills/integrate-openreceive/SKILL.md +10 -1
- data/skills/integrate-openreceive/references/astro.md +8 -9
- data/skills/integrate-openreceive/references/bolt.md +9 -7
- data/skills/integrate-openreceive/references/btcpay.md +3 -4
- data/skills/integrate-openreceive/references/django.md +2 -3
- data/skills/integrate-openreceive/references/edd.md +4 -5
- data/skills/integrate-openreceive/references/fastapi.md +4 -5
- data/skills/integrate-openreceive/references/fastify.md +4 -5
- data/skills/integrate-openreceive/references/flask.md +2 -3
- data/skills/integrate-openreceive/references/fossbilling.md +48 -16
- data/skills/integrate-openreceive/references/laravel.md +3 -4
- data/skills/integrate-openreceive/references/lovable.md +16 -12
- data/skills/integrate-openreceive/references/medusa.md +12 -5
- data/skills/integrate-openreceive/references/mobile.md +1 -1
- data/skills/integrate-openreceive/references/nestjs.md +2 -3
- data/skills/integrate-openreceive/references/next.md +4 -5
- data/skills/integrate-openreceive/references/node.md +4 -5
- data/skills/integrate-openreceive/references/nuxt.md +9 -10
- data/skills/integrate-openreceive/references/odoo.md +446 -0
- data/skills/integrate-openreceive/references/paymenter.md +5 -6
- data/skills/integrate-openreceive/references/php.md +2 -3
- data/skills/integrate-openreceive/references/prestashop.md +476 -0
- data/skills/integrate-openreceive/references/rails.md +2 -3
- data/skills/integrate-openreceive/references/react-router.md +8 -9
- data/skills/integrate-openreceive/references/sveltekit.md +9 -10
- data/skills/integrate-openreceive/references/tanstack-start.md +14 -11
- data/skills/integrate-openreceive/references/vendure.md +544 -0
- data/skills/integrate-openreceive/references/woocommerce.md +5 -6
- metadata +4 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c10eb99c4f0e844372ad4d7118fd0bf31709ff8057ab866fadd620709d5cf473
|
|
4
|
+
data.tar.gz: '0665926238910589002659373b4d87d9f246d65347aa26dbdbb46e03851a920e'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 690edbd738078a7e70f542b55b62d1df8580407ea565ff1a01a77d697a0c9e4a71a87136546618758339ba33921377f3bddc48895b21fd37b4d2ec4679e19f27
|
|
7
|
+
data.tar.gz: e73bfa44e4ece6112a97221fccae50703abce4b1549ca3326c3ad6f4ff1e2962902e1d1485d3b4982cfbaba89a59e59935a54eb2f906ab0b9870b6e9f916a695
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.30 - 2026-10-19
|
|
4
|
+
|
|
5
|
+
Release with the complete 0.4.30 package family. The bundled agent skill adds the
|
|
6
|
+
PrestaShop, Odoo and Vendure references and the guide corrections from a review of
|
|
7
|
+
openreceive.org. No Ruby runtime changes from 0.4.29.
|
|
8
|
+
|
|
9
|
+
## 0.4.29 - 2026-10-19
|
|
10
|
+
|
|
11
|
+
Release with the complete 0.4.29 package family. The bundled agent skill's
|
|
12
|
+
FOSSBilling reference covers the extension directory install. No Ruby runtime
|
|
13
|
+
changes from 0.4.28.
|
|
14
|
+
|
|
3
15
|
## 0.4.28 - 2026-10-18
|
|
4
16
|
|
|
5
17
|
Release with the complete 0.4.28 package family. The bundled agent skill adds
|
data/lib/openreceive/version.rb
CHANGED
|
@@ -6,7 +6,7 @@ description: >
|
|
|
6
6
|
SvelteKit, Nuxt, Astro, React Router, TanStack Start, Rails,
|
|
7
7
|
Python, Django, FastAPI, Flask, Laravel, plain PHP, WordPress/WooCommerce,
|
|
8
8
|
Easy Digital Downloads,
|
|
9
|
-
Paymenter, FOSSBilling, Medusa, Lovable, Bolt, Supabase, React, Vue, Svelte, Angular, or plain HTML applications,
|
|
9
|
+
Paymenter, FOSSBilling, PrestaShop, Odoo, Medusa, Vendure, Lovable, Bolt, Supabase, React, Vue, Svelte, Angular, or plain HTML applications,
|
|
10
10
|
mobile apps (React Native, Expo, Flutter, Swift, Kotlin) through their
|
|
11
11
|
server, or connecting BTCPay Server to a receive-only NWC wallet. A configured swap provider
|
|
12
12
|
converts these payments to BTC over Lightning in the merchant's connected
|
|
@@ -59,9 +59,18 @@ connected wallet; asset and network availability depends on the provider.
|
|
|
59
59
|
- FOSSBilling: [references/fossbilling.md](references/fossbilling.md) — a
|
|
60
60
|
module and payment gateway from the GitHub release, configured with
|
|
61
61
|
console commands; no Composer or npm packages.
|
|
62
|
+
- PrestaShop: [references/prestashop.md](references/prestashop.md) — a
|
|
63
|
+
payment module from the GitHub release, configured with bin/console
|
|
64
|
+
commands; no Composer or npm packages.
|
|
65
|
+
- Odoo: [references/odoo.md](references/odoo.md) — a payment provider module
|
|
66
|
+
from the GitHub release and the `openreceive` package from PyPI,
|
|
67
|
+
configured with `odoo openreceive` commands.
|
|
62
68
|
- Medusa: [references/medusa.md](references/medusa.md) — the
|
|
63
69
|
`@openreceive/medusa` plugin and payment provider in the Medusa server,
|
|
64
70
|
and the React checkout in the storefront; no hooks to write.
|
|
71
|
+
- Vendure: [references/vendure.md](references/vendure.md) — the
|
|
72
|
+
`@openreceive/vendure` plugin and payment method handler in the Vendure
|
|
73
|
+
server, and the React checkout in the storefront; no hooks to write.
|
|
65
74
|
- Lovable (TanStack Start on Cloudflare Workers, with Supabase):
|
|
66
75
|
[references/lovable.md](references/lovable.md) — no terminal; codes are
|
|
67
76
|
Lovable secrets and payments go through Supabase's HTTPS API.
|
|
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/astro/full.md
|
|
|
17
17
|
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
18
|
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
19
|
|
|
20
|
-
These directions describe OpenReceive 0.4.
|
|
20
|
+
These directions describe OpenReceive 0.4.30.
|
|
21
21
|
|
|
22
22
|
Add OpenReceive to an Astro site — the one you are already working in, on
|
|
23
23
|
`@astrojs/node`. OpenReceive ships no Astro package: the integration is one
|
|
@@ -434,13 +434,12 @@ enough; drop the `.md` for the same page a person would read.
|
|
|
434
434
|
- https://openreceive.org/guides/custom-checkout-route.md — advanced: replacing the shipped adapter's routes with your own
|
|
435
435
|
- https://openreceive.org/guides/react-material-ui-recipe.md — a worked custom UI on a component library
|
|
436
436
|
- https://openreceive.org/guides/quickstart-next.md — each hook explained step by step, on Next.js; they are the same here
|
|
437
|
+
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
437
438
|
- https://openreceive.org/guides.md — the index, if what you need is not above
|
|
438
439
|
|
|
439
440
|
Questions, or a problem with the library itself:
|
|
440
441
|
https://openreceive.org/contact
|
|
441
442
|
|
|
442
|
-
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
443
|
-
|
|
444
443
|
---
|
|
445
444
|
|
|
446
445
|
## The quickstart, in full
|
|
@@ -481,7 +480,7 @@ On Node, with `@astrojs/node`. The payment route and the checkout page render
|
|
|
481
480
|
on demand (`prerender = false`); the rest of the site can stay static. The
|
|
482
481
|
wallet connection and your database driver need Node, so the route cannot run
|
|
483
482
|
on an edge runtime. The Vercel and Netlify adapters deploy Node functions:
|
|
484
|
-
read Bitcoin checkout on serverless hosts first.
|
|
483
|
+
read [Bitcoin checkout on serverless hosts](https://openreceive.org/guides/serverless.md) first.
|
|
485
484
|
For Cloudflare Workers, the [TanStack Start recipe](https://openreceive.org/guides/tanstack-start-recipe.md#where-it-runs)
|
|
486
485
|
explains what a Worker needs. This recipe was not run on those hosts.
|
|
487
486
|
|
|
@@ -572,25 +571,25 @@ export const POST: APIRoute = (context) => handleOpenReceive(context);
|
|
|
572
571
|
|
|
573
572
|
`native` is the endpoint's `APIContext`, so `authorize` can check the
|
|
574
573
|
session your app already has: its cookies, or the user your middleware puts
|
|
575
|
-
in `context.locals`. The Next.js quickstart
|
|
574
|
+
in `context.locals`. The [Next.js quickstart](https://openreceive.org/guides/quickstart-next.md)
|
|
576
575
|
explains each hook. They are the same here.
|
|
577
576
|
|
|
578
577
|
One stack serves the whole server process. Astro's origin check refuses
|
|
579
578
|
cross-site form posts. The checkout sends JSON, which it lets through.
|
|
580
579
|
`clientAddress` is the socket address. Behind your own reverse proxy, list
|
|
581
580
|
your domain in `security.allowedDomains`: Astro then takes the payer's
|
|
582
|
-
address from `x-forwarded-for` (Rate limiting).
|
|
581
|
+
address from `x-forwarded-for` ([Rate limiting](https://openreceive.org/guides/rate-limiting.md)).
|
|
583
582
|
|
|
584
583
|
### Your database
|
|
585
584
|
|
|
586
585
|
`db` is a `pg` Pool, `node:sqlite` or `better-sqlite3`, or one of the
|
|
587
|
-
adapters in Node ORM recipes. With Drizzle, pass
|
|
586
|
+
adapters in [Node ORM recipes](https://openreceive.org/guides/node-orms.md). With Drizzle, pass
|
|
588
587
|
the `pg` Pool underneath it.
|
|
589
588
|
|
|
590
589
|
Create OpenReceive's two tables with your migrations
|
|
591
590
|
(`npx openreceive scaffold payments --orm <your orm>`), or run
|
|
592
591
|
`paymentsSchemaSql("postgres")` from `@openreceive/http` once. It is
|
|
593
|
-
idempotent. See Payment storage.
|
|
592
|
+
idempotent. See [Payment storage](https://openreceive.org/guides/storage.md).
|
|
594
593
|
|
|
595
594
|
### The checkout page
|
|
596
595
|
|
|
@@ -630,7 +629,7 @@ if (!order || order.visitor !== Astro.cookies.get("visitor")?.value) {
|
|
|
630
629
|
|
|
631
630
|
The element starts the checkout in the browser. The payer picks Bitcoin and
|
|
632
631
|
gets the invoice. Keep it at the order's own URL: a payer with a swap deposit
|
|
633
|
-
in flight comes back to it (Swap refunds).
|
|
632
|
+
in flight comes back to it ([Swap refunds](https://openreceive.org/guides/swap-refunds.md)).
|
|
634
633
|
|
|
635
634
|
### Settings
|
|
636
635
|
|
|
@@ -17,7 +17,7 @@ If your fetch tool gave you a summary, fetch that URL again for the full text.
|
|
|
17
17
|
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
18
|
- Start Step 1 only once NWC_URI is saved, and LSC_URI_PRIMARY is saved or the user said "Bitcoin only".
|
|
19
19
|
|
|
20
|
-
These directions describe OpenReceive 0.4.
|
|
20
|
+
These directions describe OpenReceive 0.4.30.
|
|
21
21
|
|
|
22
22
|
Add OpenReceive to this Bolt app: a Vite React app on Bolt Cloud, with Bolt
|
|
23
23
|
Database or a connected Supabase project as its database, and Supabase Edge
|
|
@@ -123,9 +123,11 @@ explicitly declined.
|
|
|
123
123
|
|
|
124
124
|
## Step 1 — the packages
|
|
125
125
|
|
|
126
|
-
Add `@openreceive/react` at 0.4.
|
|
127
|
-
`package.json`. The function imports `npm:@openreceive/http@^0.4.
|
|
128
|
-
and `npm:@supabase/supabase-js@2` directly; add nothing else.
|
|
126
|
+
Add `@openreceive/react` at 0.4.30 or newer to the app's
|
|
127
|
+
`package.json`. The function imports `npm:@openreceive/http@^0.4.30`
|
|
128
|
+
and `npm:@supabase/supabase-js@2` directly; add nothing else. (The recipe
|
|
129
|
+
below writes `^0.4.27`, the oldest release with the `cors` option; both
|
|
130
|
+
resolve to the newest 0.4.x.) No `pg`, no
|
|
129
131
|
Postgres driver, no OpenReceive scaffold.
|
|
130
132
|
|
|
131
133
|
## Step 2 — the migration
|
|
@@ -353,7 +355,7 @@ Use `@openreceive/*` 0.4.27 or newer: the function needs the `cors` option.
|
|
|
353
355
|
|
|
354
356
|
### 1. The migration
|
|
355
357
|
|
|
356
|
-
Save the SQL from Supabase migration,
|
|
358
|
+
Save the SQL from [Supabase migration](https://openreceive.org/guides/supabase-migration.md),
|
|
357
359
|
unchanged, as a new migration (`supabase/migrations/<timestamp>_openreceive.sql`)
|
|
358
360
|
and apply it. It creates OpenReceive's tables with row level security on and
|
|
359
361
|
every grant revoked from `anon` and `authenticated`, and the functions the
|
|
@@ -502,7 +504,7 @@ is. OpenReceive never allows credentials across sites, so no cookie reaches
|
|
|
502
504
|
the function, and a page on any listed origin can only send the tokens it
|
|
503
505
|
holds. `authorize` decides with the token, on every request. Never answer
|
|
504
506
|
these routes with CORS headers of your own, and never remove the token check.
|
|
505
|
-
More: Cross-site requests.
|
|
507
|
+
More: [Cross-site requests](https://openreceive.org/guides/authorization.md#cross-site-requests).
|
|
506
508
|
|
|
507
509
|
### 6. The secrets
|
|
508
510
|
|
|
@@ -573,7 +575,7 @@ page, as the payer's receipt.
|
|
|
573
575
|
OpenReceive's CI runs both storage routes in Supabase's edge-runtime under
|
|
574
576
|
the hosted limits, including a cross-site page with a bearer token. The trial
|
|
575
577
|
harness runs coding agents through a Bolt-shaped shop on a local Supabase
|
|
576
|
-
stack (see How we test platforms). We
|
|
578
|
+
stack (see [How we test platforms](https://openreceive.org/guides/how-we-test-platforms.md)). We
|
|
577
579
|
have not deployed to Supabase's hosted platform: its own API gateway, its
|
|
578
580
|
`verify_jwt` check and its handling of preflights are untested. If something
|
|
579
581
|
there does not work as this recipe says,
|
|
@@ -13,11 +13,11 @@ curl -fsSL https://openreceive.org/agent-directions/btcpay/full.md
|
|
|
13
13
|
- Check first: BTCPay Server 2.4.4 or later, and the plugin installed from Plugins → Plugin Directory.
|
|
14
14
|
- Unless the store already uses OpenReceive, stop and ask the user for a receive-only NWC code.
|
|
15
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
|
|
16
|
+
- Next ask for the LSC code. If the user wants stablecoins, USDT, USDC, ETH, SOL or crypto, do not ask yes/no first.
|
|
17
17
|
- Never tick the spend-capable override to make a save succeed.
|
|
18
18
|
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
19
19
|
|
|
20
|
-
These directions describe OpenReceive 0.4.
|
|
20
|
+
These directions describe OpenReceive 0.4.30.
|
|
21
21
|
|
|
22
22
|
Connect a BTCPay Server store to a receive-only NWC wallet with the OpenReceive
|
|
23
23
|
plugin, and optionally let payers pay BTCPay invoices with USDT, USDC, ETH or
|
|
@@ -196,13 +196,12 @@ enough; drop the `.md` for the same page a person would read.
|
|
|
196
196
|
- https://openreceive.org/guides/lightning-swap-connect.md — what an LSC code actually is
|
|
197
197
|
- https://openreceive.org/guides/automated-swaps.md — provider states, and what turning swaps on commits a merchant to
|
|
198
198
|
- https://openreceive.org/guides/swap-refunds.md — the refund states; the route back is BTCPay's own invoice checkout page here
|
|
199
|
+
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
199
200
|
- https://openreceive.org/guides.md — the index, if what you need is not above
|
|
200
201
|
|
|
201
202
|
Questions, or a problem with the plugin itself:
|
|
202
203
|
https://openreceive.org/contact
|
|
203
204
|
|
|
204
|
-
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
205
|
-
|
|
206
205
|
---
|
|
207
206
|
|
|
208
207
|
## The quickstart, in full
|
|
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/django/full.md
|
|
|
17
17
|
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
18
|
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
19
|
|
|
20
|
-
These directions describe OpenReceive 0.4.
|
|
20
|
+
These directions describe OpenReceive 0.4.30.
|
|
21
21
|
|
|
22
22
|
Add OpenReceive to a Django project — the app you are already working in. You
|
|
23
23
|
do not need a copy of the OpenReceive source: the Python package is on PyPI
|
|
@@ -442,13 +442,12 @@ enough; drop the `.md` for the same page a person would read.
|
|
|
442
442
|
- https://openreceive.org/guides/custom-checkout-route.md — advanced: replacing the mounted engine's routes with your own
|
|
443
443
|
- https://openreceive.org/guides/react-material-ui-recipe.md — a worked custom UI on a component library
|
|
444
444
|
- https://openreceive.org/agent-directions/flask.md — the same engine as a Flask Blueprint: follow those directions instead if this app is Flask after all
|
|
445
|
+
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
445
446
|
- https://openreceive.org/guides.md — the index, if what you need is not above
|
|
446
447
|
|
|
447
448
|
Questions, or a problem with the library itself:
|
|
448
449
|
https://openreceive.org/contact
|
|
449
450
|
|
|
450
|
-
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
451
|
-
|
|
452
451
|
---
|
|
453
452
|
|
|
454
453
|
## The quickstart, in full
|
|
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/edd/full.md
|
|
|
17
17
|
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
18
|
- Setup is done only when the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
19
|
|
|
20
|
-
These directions describe OpenReceive 0.4.
|
|
20
|
+
These directions describe OpenReceive 0.4.30.
|
|
21
21
|
|
|
22
22
|
Install and configure the OpenReceive payment gateway in the Easy Digital
|
|
23
23
|
Downloads (EDD) store you are working in. Preserve its theme, checkout,
|
|
@@ -96,7 +96,7 @@ is saved or the user said "Bitcoin only". Never invent a placeholder code.
|
|
|
96
96
|
Install this release from the WordPress.org plugin directory:
|
|
97
97
|
|
|
98
98
|
```sh
|
|
99
|
-
wp plugin install openreceive --version=0.4.
|
|
99
|
+
wp plugin install openreceive --version=0.4.30 --activate
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
If that fails because WordPress.org does not have this version yet, install
|
|
@@ -104,7 +104,7 @@ the ZIP attached to the same GitHub release. Never install the GitHub
|
|
|
104
104
|
source-code ZIP or a ZIP from an older release:
|
|
105
105
|
|
|
106
106
|
```sh
|
|
107
|
-
wp plugin install https://github.com/OpenReceive/openreceive/releases/download/v0.4.
|
|
107
|
+
wp plugin install https://github.com/OpenReceive/openreceive/releases/download/v0.4.30/openreceive-wordpress-0.4.30.zip --activate
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
It needs Easy Digital Downloads active, and PHP 8.2+ with GMP and sodium in
|
|
@@ -222,7 +222,6 @@ question.
|
|
|
222
222
|
- [Lightning Swap Connect URI](https://openreceive.org/guides/lightning-swap-connect.md)
|
|
223
223
|
- [Security](https://openreceive.org/guides/security.md)
|
|
224
224
|
- [Price Feeds](https://openreceive.org/guides/price-feeds.md)
|
|
225
|
-
- [Payment Safety Upgrade](https://openreceive.org/guides/payment-safety-upgrade.md)
|
|
226
225
|
|
|
227
226
|
---
|
|
228
227
|
|
|
@@ -258,7 +257,7 @@ activate it. With WP-CLI, run `wp plugin install openreceive --activate`.
|
|
|
258
257
|
|
|
259
258
|
Each GitHub release also attaches the plugin as a ZIP, for a site that cannot
|
|
260
259
|
reach WordPress.org:
|
|
261
|
-
[openreceive-wordpress-0.4.
|
|
260
|
+
[openreceive-wordpress-0.4.30.zip](https://github.com/OpenReceive/openreceive/releases/download/v0.4.30/openreceive-wordpress-0.4.30.zip).
|
|
262
261
|
Install it through **Plugins → Add New → Upload Plugin**. The GitHub
|
|
263
262
|
source-code ZIP is not an installable plugin.
|
|
264
263
|
|
|
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/fastapi/full.md
|
|
|
17
17
|
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
18
|
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
19
|
|
|
20
|
-
These directions describe OpenReceive 0.4.
|
|
20
|
+
These directions describe OpenReceive 0.4.30.
|
|
21
21
|
|
|
22
22
|
Add OpenReceive to a FastAPI application — the app you are already working in.
|
|
23
23
|
You do not need a copy of the OpenReceive source: the engine is on PyPI
|
|
@@ -444,13 +444,12 @@ enough; drop the `.md` for the same page a person would read.
|
|
|
444
444
|
- https://openreceive.org/guides/custom-checkout-route.md — advanced: replacing the shipped adapter's routes with your own
|
|
445
445
|
- https://openreceive.org/guides/react-material-ui-recipe.md — a worked custom UI on a component library
|
|
446
446
|
- https://openreceive.org/agent-directions/flask.md — the same engine as a Flask Blueprint: follow those directions instead if this app is Flask after all
|
|
447
|
+
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
447
448
|
- https://openreceive.org/guides.md — the index, if what you need is not above
|
|
448
449
|
|
|
449
450
|
Questions, or a problem with the library itself:
|
|
450
451
|
https://openreceive.org/contact
|
|
451
452
|
|
|
452
|
-
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
453
|
-
|
|
454
453
|
---
|
|
455
454
|
|
|
456
455
|
## The quickstart, in full
|
|
@@ -625,14 +624,14 @@ checks the wallet, and requests get `503 WALLET_UNAVAILABLE` until the check
|
|
|
625
624
|
passes.
|
|
626
625
|
→ [openreceive_router](https://openreceive.org/guides/api-reference.md#openreceive_router) ·
|
|
627
626
|
[openreceive_lifespan](https://openreceive.org/guides/api-reference.md#openreceive_lifespan) ·
|
|
628
|
-
[the authorize context](https://openreceive.org/guides/api-reference.md#
|
|
627
|
+
[the authorize context](https://openreceive.org/guides/api-reference.md#host-python)
|
|
629
628
|
|
|
630
629
|
`rate_limiting=True` is for public web shops. Leave it off for point-of-sale,
|
|
631
630
|
where many payers share one IP. → [Rate limiting](https://openreceive.org/guides/rate-limiting.md)
|
|
632
631
|
|
|
633
632
|
An optional worker, `openreceive notifications --app main:app`, listens for
|
|
634
633
|
wallet payment notifications so settlement does not wait for the next page
|
|
635
|
-
load. → [openreceive notifications](https://openreceive.org/guides/api-reference.md#openreceive-notifications)
|
|
634
|
+
load. → [openreceive notifications](https://openreceive.org/guides/api-reference.md#openreceive-reconcile--openreceive-notifications)
|
|
636
635
|
|
|
637
636
|
Your app also needs an ordinary order-creation route that validates the cart,
|
|
638
637
|
prices with exact decimal math, and returns the order id the page will pass as
|
|
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/fastify/full.md
|
|
|
17
17
|
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
18
|
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
19
|
|
|
20
|
-
These directions describe OpenReceive 0.4.
|
|
20
|
+
These directions describe OpenReceive 0.4.30.
|
|
21
21
|
|
|
22
22
|
Add OpenReceive to a Fastify application — the app you are already working in.
|
|
23
23
|
You do not need a copy of the OpenReceive source: the packages are on npm, and
|
|
@@ -429,13 +429,12 @@ enough; drop the `.md` for the same page a person would read.
|
|
|
429
429
|
- https://openreceive.org/guides/api-reference.md — every route, option and error code
|
|
430
430
|
- https://openreceive.org/guides/custom-checkout-route.md — advanced: replacing the shipped adapter's routes with your own
|
|
431
431
|
- https://openreceive.org/guides/react-material-ui-recipe.md — a worked custom UI on a component library
|
|
432
|
+
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
432
433
|
- https://openreceive.org/guides.md — the index, if what you need is not above
|
|
433
434
|
|
|
434
435
|
Questions, or a problem with the library itself:
|
|
435
436
|
https://openreceive.org/contact
|
|
436
437
|
|
|
437
|
-
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
438
|
-
|
|
439
438
|
---
|
|
440
439
|
|
|
441
440
|
## The quickstart, in full
|
|
@@ -464,8 +463,8 @@ stays the same.
|
|
|
464
463
|
| Server | `@openreceive/fastify`, `@openreceive/express`, `@openreceive/next` |
|
|
465
464
|
| Frontend | `@openreceive/react`, `@openreceive/vue`, `@openreceive/svelte`, `@openreceive/angular`, `@openreceive/elements` (plain HTML) |
|
|
466
465
|
|
|
467
|
-
Express: [quickstart
|
|
468
|
-
[quickstart
|
|
466
|
+
Express: [Express quickstart](https://openreceive.org/guides/quickstart-node.md) · Next.js:
|
|
467
|
+
[Next.js quickstart](https://openreceive.org/guides/quickstart-next.md). This page is the Fastify one.
|
|
469
468
|
|
|
470
469
|
On a fresh project, also install what this guide assumes you already have: the
|
|
471
470
|
framework, a static-file plugin for the checkout page, and an env loader
|
|
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/flask/full.md
|
|
|
17
17
|
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
18
|
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
19
|
|
|
20
|
-
These directions describe OpenReceive 0.4.
|
|
20
|
+
These directions describe OpenReceive 0.4.30.
|
|
21
21
|
|
|
22
22
|
Add OpenReceive to a Flask application — the app you are already working in.
|
|
23
23
|
You do not need a copy of the OpenReceive source: the engine is on PyPI
|
|
@@ -449,13 +449,12 @@ enough; drop the `.md` for the same page a person would read.
|
|
|
449
449
|
- https://openreceive.org/guides/api-reference.md — every route, option and error code
|
|
450
450
|
- https://openreceive.org/guides/custom-checkout-route.md — advanced: replacing the shipped adapter's routes with your own
|
|
451
451
|
- https://openreceive.org/guides/react-material-ui-recipe.md — a worked custom UI on a component library
|
|
452
|
+
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
452
453
|
- https://openreceive.org/guides.md — the index, if what you need is not above
|
|
453
454
|
|
|
454
455
|
Questions, or a problem with the library itself:
|
|
455
456
|
https://openreceive.org/contact
|
|
456
457
|
|
|
457
|
-
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
458
|
-
|
|
459
458
|
---
|
|
460
459
|
|
|
461
460
|
## The quickstart, in full
|
|
@@ -3,7 +3,7 @@ This is the full file; follow it from Step 0.
|
|
|
3
3
|
# OpenReceive agent directions (FOSSBilling)
|
|
4
4
|
|
|
5
5
|
```sh
|
|
6
|
-
# READ THIS FIRST: this file is
|
|
6
|
+
# READ THIS FIRST: this file is 24 KB and a summary drops required steps. Download it whole:
|
|
7
7
|
curl -fsSL https://openreceive.org/agent-directions/fossbilling/full.md
|
|
8
8
|
# Skip the download only if you already have all of it: pasted, read from disk or fetched raw.
|
|
9
9
|
```
|
|
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/fossbilling/full.md
|
|
|
17
17
|
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
18
|
- Setup is done only when the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
19
|
|
|
20
|
-
These directions describe OpenReceive 0.4.
|
|
20
|
+
These directions describe OpenReceive 0.4.30.
|
|
21
21
|
|
|
22
22
|
Install and configure the OpenReceive payment method in the FOSSBilling
|
|
23
23
|
billing panel you are working in. Preserve its theme, clients, products,
|
|
@@ -121,16 +121,18 @@ Docker image, download and unpack it inside the container, as the web user,
|
|
|
121
121
|
then activate the module:
|
|
122
122
|
|
|
123
123
|
```sh
|
|
124
|
-
docker compose exec -T -u www-data fossbilling sh -c 'curl -fsSLO https://github.com/OpenReceive/openreceive/releases/download/v0.4.
|
|
124
|
+
docker compose exec -T -u www-data fossbilling sh -c 'curl -fsSLO https://github.com/OpenReceive/openreceive/releases/download/v0.4.30/openreceive-fossbilling-0.4.30.zip && unzip -oq openreceive-fossbilling-0.4.30.zip && rm openreceive-fossbilling-0.4.30.zip'
|
|
125
125
|
docker compose exec -T -u www-data fossbilling php modules/Openreceive/activate.php
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
On a server, unpack it in FOSSBilling's folder the same way, make the two
|
|
129
|
-
folders the web user's, and run the same `activate.php`. Activation
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
129
|
+
folders the web user's, and run the same `activate.php`. Activation writes the
|
|
130
|
+
payment gateway's files into `library/Payment/Adapter/OpenReceive` from the
|
|
131
|
+
module's own copy, creates the extension's two tables in FOSSBilling's
|
|
132
|
+
database and its payment gateway, "Bitcoin Lightning", hooks its reconcile
|
|
133
|
+
pass into FOSSBilling's cron, and makes the `openreceive:*` console commands
|
|
134
|
+
appear. The gateway stays off until a wallet code is saved. If `activate.php`
|
|
135
|
+
says that folder holds another gateway, report that and stop.
|
|
134
136
|
|
|
135
137
|
## Step 2 — store the codes
|
|
136
138
|
|
|
@@ -233,7 +235,6 @@ FOSSBilling's cron has never run, say so in one line of that message.
|
|
|
233
235
|
- [Lightning Swap Connect URI](https://openreceive.org/guides/lightning-swap-connect.md)
|
|
234
236
|
- [Security](https://openreceive.org/guides/security.md)
|
|
235
237
|
- [Price Feeds](https://openreceive.org/guides/price-feeds.md)
|
|
236
|
-
- [Payment Safety Upgrade](https://openreceive.org/guides/payment-safety-upgrade.md)
|
|
237
238
|
|
|
238
239
|
---
|
|
239
240
|
|
|
@@ -275,9 +276,9 @@ routes, console commands and cron hook), and
|
|
|
275
276
|
|
|
276
277
|
```sh
|
|
277
278
|
cd /var/www/fossbilling
|
|
278
|
-
curl -fsSLO https://github.com/OpenReceive/openreceive/releases/download/v0.4.
|
|
279
|
-
unzip -oq openreceive-fossbilling-0.4.
|
|
280
|
-
rm openreceive-fossbilling-0.4.
|
|
279
|
+
curl -fsSLO https://github.com/OpenReceive/openreceive/releases/download/v0.4.30/openreceive-fossbilling-0.4.30.zip
|
|
280
|
+
unzip -oq openreceive-fossbilling-0.4.30.zip
|
|
281
|
+
rm openreceive-fossbilling-0.4.30.zip
|
|
281
282
|
chown -R www-data:www-data modules/Openreceive library/Payment/Adapter/OpenReceive
|
|
282
283
|
sudo -u www-data php modules/Openreceive/activate.php
|
|
283
284
|
```
|
|
@@ -288,11 +289,26 @@ either. Activation creates the extension's two tables and its payment
|
|
|
288
289
|
gateway, "Bitcoin Lightning", and hooks its reconcile pass into FOSSBilling's
|
|
289
290
|
cron. The gateway stays off until a wallet code is saved.
|
|
290
291
|
|
|
292
|
+
The module carries its own copy of the payment gateway and writes it into
|
|
293
|
+
`library/Payment/Adapter/OpenReceive` each time it is activated, so running
|
|
294
|
+
`activate.php` again after an update brings the gateway up to date with the
|
|
295
|
+
module. It replaces only OpenReceive's own gateway files: if that folder holds
|
|
296
|
+
anything else, activation stops and says so.
|
|
297
|
+
|
|
291
298
|
The ZIP already bundles the extension's dependencies and the checkout's
|
|
292
299
|
script, under their own prefixed names, so Composer never runs and nothing in
|
|
293
300
|
FOSSBilling's own `vendor/` changes. The GitHub source-code ZIP is not an
|
|
294
301
|
installable extension.
|
|
295
302
|
|
|
303
|
+
#### The module-only ZIP
|
|
304
|
+
|
|
305
|
+
Each release also attaches `openreceive-fossbilling-module-<version>.zip`:
|
|
306
|
+
the module alone, with its files at the top of the ZIP rather than inside
|
|
307
|
+
`modules/Openreceive`. That is the package FOSSBilling's extension directory
|
|
308
|
+
installs. Its **Install** button unpacks the ZIP into `modules/Openreceive`,
|
|
309
|
+
and activating OpenReceive under **Extensions** then writes the payment
|
|
310
|
+
gateway, as above. Both ZIPs hold the same module.
|
|
311
|
+
|
|
296
312
|
#### FOSSBilling in Docker
|
|
297
313
|
|
|
298
314
|
FOSSBilling's official image has sodium but not GMP. Build your own image on
|
|
@@ -314,7 +330,7 @@ Run every command inside the container, in `/var/www/html`, as its web user
|
|
|
314
330
|
`www-data`. Unpack the release there too:
|
|
315
331
|
|
|
316
332
|
```sh
|
|
317
|
-
docker compose exec -T -u www-data fossbilling sh -c 'curl -fsSLO https://github.com/OpenReceive/openreceive/releases/download/v0.4.
|
|
333
|
+
docker compose exec -T -u www-data fossbilling sh -c 'curl -fsSLO https://github.com/OpenReceive/openreceive/releases/download/v0.4.30/openreceive-fossbilling-0.4.30.zip && unzip -oq openreceive-fossbilling-0.4.30.zip && rm openreceive-fossbilling-0.4.30.zip'
|
|
318
334
|
docker compose exec -T -u www-data fossbilling php modules/Openreceive/activate.php
|
|
319
335
|
```
|
|
320
336
|
|
|
@@ -349,7 +365,8 @@ Lightning" to "Bitcoin & stablecoins"; the settings page's name field, or
|
|
|
349
365
|
`--name="…"`, sets your own. Skip the swap code for Bitcoin-only checkout.
|
|
350
366
|
|
|
351
367
|
`doctor` checks the module, GMP and sodium, each code as set or unset (never
|
|
352
|
-
its value), the payment gateway, the tables, the checkout's
|
|
368
|
+
its value), the payment gateway's files and row, the tables, the checkout's
|
|
369
|
+
files, the wallet,
|
|
353
370
|
the price feed for every FOSSBilling currency, each swap provider and the cron
|
|
354
371
|
hook with FOSSBilling's last cron run. It exits nonzero when a check fails.
|
|
355
372
|
|
|
@@ -413,8 +430,14 @@ converted reclaims it from the same invoice's payment page, while the invoice
|
|
|
413
430
|
is still unpaid. If you turn on swaps, you commit to keeping that path
|
|
414
431
|
available. See [swap refunds](https://openreceive.org/guides/swap-refunds.md).
|
|
415
432
|
|
|
416
|
-
Deactivating
|
|
417
|
-
|
|
433
|
+
Deactivating the module turns its payment gateway off, because a deactivated
|
|
434
|
+
module serves no checkout. Activating it again turns the gateway back on when
|
|
435
|
+
a wallet code is saved.
|
|
436
|
+
|
|
437
|
+
Uninstalling the module keeps the two tables, which are a record of payments
|
|
438
|
+
received, and leaves the gateway off. Its row and its files in
|
|
439
|
+
`library/Payment/Adapter/OpenReceive` stay too, since FOSSBilling's invoices
|
|
440
|
+
and transactions refer to the gateway.
|
|
418
441
|
|
|
419
442
|
### Tested, and not tested
|
|
420
443
|
|
|
@@ -427,6 +450,15 @@ service is active. A payment whose page was closed was recorded by
|
|
|
427
450
|
FOSSBilling's cron. Another client, a visitor and a request without the page's
|
|
428
451
|
security token were refused.
|
|
429
452
|
|
|
453
|
+
Tested on 2026-10-18 in the same setup: the module-only ZIP installed through
|
|
454
|
+
FOSSBilling's own **Install** and **Activate** buttons in the admin area, with
|
|
455
|
+
the extension directory's answer for OpenReceive supplied locally, then the
|
|
456
|
+
same checks. Deactivating, activating again, uninstalling, reinstalling and
|
|
457
|
+
updating a 0.4.28 install with `activate.php` were checked too. On
|
|
458
|
+
FOSSBilling 0.8.0, the oldest release the module accepts: the same install
|
|
459
|
+
and activation, `configure`, the doctor, `test-invoice --new`, deactivating
|
|
460
|
+
and activating again.
|
|
461
|
+
|
|
430
462
|
Not tested: FOSSBilling behind nginx rather than its image's Apache, shared
|
|
431
463
|
hosting without a shell, and FOSSBilling's subscription payments. Lightning
|
|
432
464
|
cannot pull a payment, so OpenReceive offers no subscriptions: the client
|
|
@@ -17,7 +17,7 @@ curl -fsSL https://openreceive.org/agent-directions/laravel/full.md
|
|
|
17
17
|
- Do not suggest rotating or revoking a code because it was pasted here.
|
|
18
18
|
- Start the quickstart only once the NWC code is saved, and the LSC code is saved or the user said "Bitcoin only".
|
|
19
19
|
|
|
20
|
-
These directions describe OpenReceive 0.4.
|
|
20
|
+
These directions describe OpenReceive 0.4.30.
|
|
21
21
|
|
|
22
22
|
Add OpenReceive to a Laravel application — the app you are already working in.
|
|
23
23
|
You do not need a copy of the OpenReceive source: the package is on Packagist
|
|
@@ -405,13 +405,12 @@ enough; drop the `.md` for the same page a person would read.
|
|
|
405
405
|
- https://openreceive.org/guides/api-reference.md — every route, option and error code
|
|
406
406
|
- https://openreceive.org/guides/custom-checkout-route.md — advanced: replacing the mounted engine's routes with your own
|
|
407
407
|
- https://openreceive.org/guides/react-material-ui-recipe.md — a worked custom UI on a component library
|
|
408
|
+
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
408
409
|
- https://openreceive.org/guides.md — the index, if what you need is not above
|
|
409
410
|
|
|
410
411
|
Questions, or a problem with the library itself:
|
|
411
412
|
https://openreceive.org/contact
|
|
412
413
|
|
|
413
|
-
- https://openreceive.org/guides/payment-safety-upgrade.md — coordinated upgrades and reviewed repair of existing attempts
|
|
414
|
-
|
|
415
414
|
---
|
|
416
415
|
|
|
417
416
|
## The quickstart, in full
|
|
@@ -421,7 +420,7 @@ passes. The page it comes from is https://openreceive.org/guides/quickstart-lara
|
|
|
421
420
|
|
|
422
421
|
## Laravel quickstart
|
|
423
422
|
|
|
424
|
-
Requires PHP ≥ 8.2 (64-bit) and Laravel
|
|
423
|
+
Requires PHP ≥ 8.2 (64-bit) and Laravel 11, 12 or 13. You also need these
|
|
425
424
|
PHP extensions:
|
|
426
425
|
|
|
427
426
|
- `ext-gmp`, which is REQUIRED. The NWC transport's elliptic-curve math depends
|