Skip to content

Changelog

D edited this page Aug 2, 2026 · 1 revision

Changelog

1.1.0

  • Fixed post-payment flow: after the CLINK receipt arrives, the order-received page now shows an immediate "Payment confirmed" screen and reliably redirects to the order summary
  • mark_paid now retries transiently when the invoice record isn't ready yet (receipt arriving before invoice confirmation completes), preventing the payment page from getting stuck on a fresh QR code
  • If server bookkeeping still can't complete, the confirmation screen stays visible with a "Payment received" note instead of reloading into a pending-invoice loop

1.0.9

  • Security fix: Added strict BOLT11 invoice validation — checksum, network, amount, and expiry are now verified against the order before payment is confirmed
  • Security fix: Order-key ownership is now enforced on all AJAX handlers, closing a guest-order payment bypass (guests must present the matching order key)
  • Security fix: save_ndebit no longer accepts a client-supplied subscription ID; subscriptions are resolved server-side from the verified order
  • Added Network setting (mainnet / testnet / regtest) to the gateway configuration
  • Invoice amounts must match the order total (within 1 sat) and invoices expiring in under 60 seconds are rejected

1.0.8

  • Security fix: Replaced generic nonces with per-order nonces for all AJAX handlers to prevent an unauthenticated order payment bypass
  • Added order status verification to mark_paid handler (must be pending or on-hold)
  • Added invoice existence check to mark_paid handler (invoice must be generated first)
  • Added ownership checks to confirm_payment and save_ndebit handlers for logged-in users
  • All AJAX actions (confirm, check, mark_paid, save_ndebit) now use order-bound nonces

1.0.7

  • Stripped remote gist.github.com URL from the built JavaScript bundle (WordPress.org review compliance)
  • Fixed contributors list to match the plugin owner's WordPress.org username
  • Added a Third Party Services section documenting Nostr relays, CoinGecko, and ShockWallet.app
  • "Payment:" row on the View Subscription page shows "Auto-Renewal" (ndebit saved) or an "Activate Auto-Renewal" link pointing to the parent order's order-received page for ndebit setup

1.0.6

  • Subscription "Payment:" row now shows "Via Auto-Renewal" or "Via Manual Renewal" based on ndebit status
  • Added "Activate Auto-Renewal" action link on My Account subscription items for subscriptions without ndebit
  • Added "Get your nDebit string" link pointing to my.shockwallet.app/lapps at checkout and on My Account
  • QR codes now generated client-side with the bundled qrcode-generator library (no remote API dependency)
  • Fixed "Setup Auto-Renewal" title on the order-received page

1.0.5

  • Added ndebit auto-renewal for subscriptions — customers authorize recurring payments via CLINK
  • Auto-renewal is active by default after the first subscription payment
  • Customers can disable auto-renewal from My Account > Subscriptions
  • Added BTC / sats / ₿ (bip-0177) currency display option — overrides all frontend prices
  • Price display runs at PHP_INT_MAX priority to avoid conflicts with other plugins
  • Added a client-side price conversion fallback for compatibility with Custom Price for WooCommerce Pro and similar plugins
  • Compatibility improvements for third-party subscription plugins

1.0.4

  • Removed the redundant Store Currency setting (uses the WooCommerce default)
  • External links in the description now open in new tabs with rel="noopener noreferrer"
  • Fixed blocks checkout description rendering (HTML no longer escaped)
  • Fixed blocks checkout icon (was passing HTML instead of a URL)
  • Added loading="lazy" to the gateway icon
  • Updated repo and author URLs

1.0.3

  • Fixed blocks checkout support with a dedicated JS bundle
  • Fixed WPCS violations from audit
  • Added SCRIPT_DEBUG conditional for the .min suffix
  • Added subscriptions support

1.0.2

  • Improved error handling and logging
  • Better mobile QR code layout

1.0.1

  • Fixed classic checkout redirect flow
  • Added i18n support

1.0.0

  • Initial release

Clone this wiki locally