Releases: SlowBearDigger/xmr-pay-woocommerce
Release list
v1.1.4: authenticated nodes and setup health
Private Monero nodes can now use Basic or Digest authentication. Credentials are stored per node and are not reused during failover.
Check setup tests up to 10 configured nodes. Each card reports health, response time and a warning when a secondary node fails. The diagnostic timeout scales with the number of nodes.
Custom RPC ports accumulate across scanners in the same request. The checkout copy button now reports success only after the payment address is copied and uses a fallback when the Clipboard API is unavailable.
Includes the changes prepared as 1.1.3. Addresses #5 and #6.
v1.1.2 — works with a remote node out of the box
Setup fix (upgrade recommended; no settings change).
WordPress's wp_safe_remote_* permits only a short list of ports (80, 443, 8080, ...) as an
SSRF guard and silently blocks Monero RPC ports such as 18081 (mainnet) and 38089
(stagenet). So pointing the plugin at a remote node failed until you hand-added an
http_allowed_safe_ports filter — a wall a tester hit on the Monero forum.
The plugin now whitelists only the ports of your own configured node(s) automatically; the
safe-HTTP guard still protects every other host and port. Remote nodes work on a fresh install.
Thanks to the tester who reported it (and donated). 🙏
v1.1.1 — detection hardening (no silently-missed payments)
Hardening fix (no settings or data change; upgrade recommended).
detect_in_tx wrapped the ownership test and the amount/commitment decode in a single
catch(\Throwable){continue}. A decode error on an output that IS the merchant's (a pruned
node, a malformed tx blob) was indistinguishable from "not ours" and could report a real
payment as unpaid. The catch is now split at the ownership boundary: a non-curve-point
candidate is still treated as "not ours", but once ownership matches, an undecodable output
fails closed and is surfaced (found-but-unverified), never silently missed.
Verified against 3 real stagenet payments end to end (total 0.12 XMR), matching the xmr-pay
JavaScript library and the new pure-PHP package.
v1.1.0 — non-custodial refunds, multi-node, state machine
Added
- Non-custodial refunds (claim-link): buyer supplies a receive address, merchant pays by hand and marks it sent. Configurable expiry (snapshotted), one-click reissue, network-aware validation, and a reopen on a later refund so extra money is never stranded.
- Payments report + CSV export (owed / received / overpaid / confirmations / state / refund status), formula-injection safe.
- Resilient multi-node: comma-separated nodes fail over; height cross-checked (min across responders) so a lagging/lying node can only delay settlement, never accelerate it.
- CI on PHP 7.4 / 8.1 / 8.3.
Fixed (money path)
- Completion + proof paths used a non-existent WP function for their lock — replaced with a real atomic mutex.
- A watch order is no longer created unscannable when the node is briefly unreachable (checkout fails cleanly).
- Wrong-network refund address rejected; mempool double-spend never credited.
Default node stays stagenet by design — test on stagenet before going live. Full suite green (~957k checks).
xmr-pay for WooCommerce 1.0.1
Security hardening release. Burning-bug defence (the no-server scanner now deduplicates by the one-time output key, not the txid, so two outputs sharing a key cannot credit an order twice), requires the BCMath extension alongside GMP (the gateway hides itself if either is missing instead of failing after payment), and fully order-independent settlement. Passes WordPress.org Plugin Check (0 errors). Recommended for all installs.
xmr-pay for WooCommerce 1.0.0
Accept Monero in WooCommerce, non-custodial, with no server to run. WordPress verifies payments itself in pure PHP, or via your own xmr-pay agent.
- No-server modes (auto-detect + "I've paid") run inside WordPress; multi-tx installments and top-ups complete automatically.
- Passes WordPress.org Plugin Check (0 errors).
- Classic + Blocks checkout, HPOS-ready, signed receipts.
Install: download the zip below, or Plugins > Add New > Upload.
Requires PHP 7.4+ (GMP extension), WordPress 6.2+, WooCommerce 7.0+.
v0.1.8-beta — clear network indicator
The network (mainnet / stagenet) follows your address — there's no separate toggle. This makes that obvious:
- a read-only Network badge on the settings page (shows mainnet / stagenet / testnet),
- a hint in the setup wizard, and a note on the address field,
- documented in the README (plugin + library).
To go live: swap the address, view key and node to your mainnet ones.
v0.1.7-beta — buyer privacy + live confirmations
Privacy: Monero orders no longer store the buyer's IP address or user-agent. WooCommerce records both on every order; since Monero is irreversible (no chargebacks), there's no dispute reason to keep them — so the plugin strips them from its orders.
Live confirmations: the order's confirmation count now updates while the payment is maturing, so the admin shows progress ("received — N confirmations") before the order settles. The buyer's checkout page already updated live.
Try it: https://live.xmrpay.shop · Demo store: https://demo.xmrpay.shop
v0.1.6-beta — no-server modes + fixes
Accept Monero in WooCommerce, non-custodial. This release adds no-server modes and fixes two activation/admin bugs.
New
- No-server modes — no external agent needed. The plugin can verify payments in pure PHP (vendored Monero crypto): Auto-detect (view-only watch over your address + node) and "I've paid" (buyer pastes a txid, verified on-chain). The advanced Agent mode is still available. The no-server modes need the GMP PHP extension.
- Mode-aware setup wizard with a live "Check setup" — verifies the node, the network, and that your view key belongs to the address before you go live.
- Pricing your way — fixed-rate fallback, or point at your own price URL (not just CoinGecko).
Fixes
- The setup wizard / post-activation redirect could return "Sorry, you are not allowed to access this page." — fixed.
- The "Check setup" / "Test connection" buttons returned HTTP 400 — fixed.
Also
- All inline scripts moved to enqueued assets, ABSPATH guards,
.pottranslations, and an External services privacy disclosure (WordPress.org readiness). - Refreshed the bundled checkout widget.
Try it in your browser: https://live.xmrpay.shop · Live demo store: https://demo.xmrpay.shop
v0.1.5-beta — pairs with xmr-pay 0.4.0-beta
WooCommerce gateway for xmr-pay 0.4.0-beta. Non-custodial Monero — funds go straight to your wallet; the plugin is a thin client of your own agent.
Install: download xmr-pay-for-woocommerce.zip below → Plugins → Add New → Upload. Pair it with a xmr-pay@beta agent (npx xmr-pay).
What's new in 0.1.5-beta
- Funds never orphaned on expiry — a partially-paid order is no longer auto-cancelled when its window lapses; it stays on hold with a "your funds are safe — contact us" message.
- Overpayment recorded — exact excess saved on the order (meta + note) and shown in the admin payment meta box.
- Reconcile safety net — a 5-minute cron re-polls the agent for on-hold orders, completing any the webhook missed (covers webhook outages + node catch-up).
- Sync-status on checkout — shows "node catching up…" instead of a silent "unpaid".
- Tolerance / confirmations / expiry documented as agent-side config (
XMR_TOLERANCE_XMR,XMR_MIN_CONFIRMATIONS,XMR_EXPIRY_HOURS).
Live stagenet demo: https://demo.xmrpay.shop