=== Payments for Mollie and EDD by Yindle ===
Contributors: yindle
Tags: mollie, easy digital downloads, edd, payments, gateway
Requires at least: 7.1
Tested up to: 7.1
Requires PHP: 8.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Mollie hosted checkout for one-off EUR payments in Easy Digital Downloads Core.

== Description ==

Payments for Mollie and EDD by Yindle is the Free edition for one-off payments with Easy Digital Downloads Core. The current checkout scope is one download per order, with quantity one, in EUR.

* Hosted Mollie checkout with separate Test and Live configuration.
* API credentials encrypted locally using PHP's sodium extension.
* A durable operation ledger, idempotency keys and reconciliation to track payment attempts and recover uncertain results.
* Classic webhook notifications trigger an authenticated Mollie API lookup before payment state is applied.
* Subscription-obligation checks protect existing Pro data during an edition change.
* Locally bundled Yindle styles, fonts and brand assets.

The Free package excludes the Pro recurring checkout, renewal, cancellation and annual tax-handling implementations. It retains shared interfaces and protective subscription-obligation checks; it does not process subscriptions or require the EDD Recurring extension.

Test the complete checkout, return and webhook flow on staging using Mollie Test mode before production use. This is an independent integration by Yindle.

The administration interface is currently in English. WordPress Multisite is not supported.

== Requirements ==

* WordPress 7.1 or newer and PHP 8.4 or newer with the sodium extension.
* Easy Digital Downloads Core 3.7.0 or newer, installed and active.
* A MySQL-compatible database with InnoDB, advisory-lock support and permission to create/update the plugin's ledger tables. Credential locks, configuration reads and writes must use the same database primary; custom read-replica routing is not supported.
* An HTTPS WordPress home URL, outbound HTTPS access to Mollie, and a public webhook URL reachable by Mollie.
* A Mollie account and the appropriate Test or Live API key. Available payment methods depend on that account.

EDD and Mollie accounts/services are separate products and are not bundled. Check compatibility before updating these dependencies.

== Installation ==

1. Back up the site and database. Test the upgrade on staging first.
2. Install and activate Easy Digital Downloads Core, then upload the `payments-for-mollie-and-edd` ZIP in WordPress Plugins > Add New.
3. Activate Payments for Mollie and EDD by Yindle and open its setup page in WordPress administration.
4. Configure the Mollie Test API key and complete the readiness checks. Keep the store in Test mode for evaluation.
5. Enable the Mollie gateway in Easy Digital Downloads' payment settings and test the supported cart, return and webhook paths.

A local HTTP-only development URL cannot satisfy the production HTTPS readiness check. Configure an appropriate HTTPS test origin and reachable webhook endpoint for provider testing.

== Free and Pro ==

Free provides the bounded one-off checkout on EDD Core. Mollie Payments for EDD Pro by Yindle adds the existing annual subscription workflow, mandate/customer bindings, renewal reconciliation, cancellation handling and tax-basis checks. Pro requires supported Easy Digital Downloads Pro (3.7.0 or newer) and EDD Recurring Payments (2.13.13 or newer) for both its one-off and annual checkout paths. Those paid EDD dependencies are licensed separately.

To upgrade, back up the database and retain the WordPress secret material used to encrypt stored credentials. Install and activate Pro and its required EDD dependencies. Pro takes precedence if both Yindle editions are active, while the shared gateway identifiers, configuration and ledger data are preserved. Complete Pro's readiness checks before enabling checkout.

Free cannot service existing Pro subscriptions. Deactivating Pro is not a subscription migration or cancellation. If unresolved subscription obligations remain, the Free protection checks can hold checkout until they are reviewed and serviced by a compatible Pro installation. Retain the shared database records during any edition change.

== External services and data ==

This plugin connects to Mollie at https://api.mollie.com/v2 when an administrator checks or configures credentials/payment methods, when a customer starts checkout, and when webhooks or reconciliation request payment status. Requests authenticate using the configured Mollie API key over HTTPS.

Payment requests can contain the amount, currency, description, selected payment method, return and webhook URLs, and store/order/operation correlation references. Mollie hosts the customer's payment form; this plugin does not collect card details. Payment identifiers and statuses returned by Mollie are stored locally to reconcile the EDD order. The local operation ledger also keeps the checkout customer name/email, native order snapshot, hashed identity/correlation evidence and request state needed to bind payment reconciliation to the correct EDD order.

There is no Yindle telemetry, advertising tracker, remote font request or license-validation service in this Free package. Saving/checking a Mollie key is the administrator's explicit configuration of that external service. Before enabling checkout, disclose the Mollie payment integration in the shop's privacy notice. Stored local order/ledger data and encrypted credentials are retained during deactivation and edition changes; deleting the plugin does not erase accounting/payment history.

Your Mollie account's terms and privacy obligations apply. Review these before configuring the service:
* Mollie user agreement: https://www.mollie.com/legal/user-agreement
* Mollie privacy notice: https://www.mollie.com/legal/privacy
* Mollie payment API documentation: https://docs.mollie.com/reference/create-payment

== Credits and trademarks ==

Developed and maintained by Yindle. This is an independent integration, not an official Mollie or Easy Digital Downloads plugin. Mollie and Easy Digital Downloads names identify the external services and software it supports.

The PHP, CSS and brand assets are distributed under GPLv2 or later. Local Plus Jakarta Sans and Geist Mono fonts are included under their SIL Open Font License files in `assets/fonts/`. Human-readable PHP and CSS source is included in the download.

== Frequently Asked Questions ==

= Does Free require EDD Recurring or EDD Pro? =
No. Free uses EDD Core for its supported one-off checkout.

= Are monthly subscriptions, mixed carts or multiple quantities supported? =
No. Free handles one-off EUR checkout with one download and quantity one. Pro's recurring scope is annual; it does not imply support for every subscription configuration.

= Does switching editions erase or transfer existing subscriptions? =
No. Existing records remain shared, but only the compatible Pro runtime services Pro obligations. Check those obligations before deactivating Pro.

== Changelog ==

= 1.0.0 =
* Protects key removal while pending payment or subscription work needs the saved configuration.
* Serializes key removal with creation of the first payment record and checks current credential binding.
* Uses the current Yindle administration styles and physically separated Free/Pro packages.


= 0.3.0-beta2 =
* Prepares the independent integration name and service/privacy documentation for directory review.
* Escapes translated gateway error output and documents audited static-analysis boundaries.
* Keeps payment verification, persistence, edition ownership and obligation protection unchanged.

= 0.3.0-beta1 =
* Introduces a separate Free package for EDD Core one-off checkout.
* Preserves shared configuration and protects existing subscription obligations.
* Updates administration styling and public naming to Yindle's current guide.
