Skip to content

Repository files navigation

Maho Mollie

Maho Commerce License PHP PHPStan Level

Mollie payment gateway integration for Maho Commerce.

Accept payments through Mollie, one of Europe's leading payment service providers — offering 40+ payment methods across the Payments API and the Orders API (for Klarna and other Buy Now Pay Later methods).

Status: Beta — redirect flow + Mollie Components verified against the Mollie sandbox. Core payment flow (create → redirect → webhook → return → cron) is implemented against the Mollie Payments API, plus online refunds and admin-configurable order statuses. 28 method blocks are configurable in admin and all of them work end-to-end via redirect (the generic Mollie selector plus the per-method blocks listed below). For credit cards there's an opt-in PCI-SAQ-A flow via Mollie Components: the card-number / expiry / CVC / cardholder fields render inline in your checkout (cross-origin iframes hosted by Mollie), the customer stays on your site through to the success page, and the redirect-to-Mollie fallback still triggers if Components isn't configured or JS fails. Apple Pay's express-checkout button (cart/PDP) is not yet implemented, though Apple Pay via redirect works. Translations ship for Dutch, German, French, Italian, and Spanish.

Known gap: the webhook re-fetches the payment from Mollie's API for verification, but there is no DB-level lock around the capture path; concurrent webhook redeliveries could race.

Requirements

  • PHP >= 8.3
  • Maho Commerce >= 26.5
  • A Mollie merchant account

Installation

composer require mahocommerce/module-mollie

Clear the cache after installation:

./maho cache:flush

Configuration

Navigate to System > Configuration > Payment Methods in the Maho admin panel.

General Settings (Mollie - General Settings)

Setting Description Default
Test Mode Use the Mollie test API key to process mock payments Yes
Live API Key Your Mollie live API key (starts with live_)
Test API Key Your Mollie test API key (starts with test_)
Test API Key (button) One-click check that the configured key can reach the Mollie API
Debug Logging When enabled, writes verbose reconcile/refund events to var/log/mollie.log No

Find your API keys in the Mollie dashboard under Developers.

Method-specific groups

Each of the 28 bundled methods has its own admin group with the usual active / title / country / sort-order controls plus per-method pending / processing order statuses.

Roadmap

API layer

  • Payments API integration (create, webhook, return, cron reconciliation, refunds)
  • Orders API integration (Klarna line items, in3, Billie, Alma, Riverty, Voucher categorisation)
  • Apple Pay express checkout (domain association + JS button)

Payment methods

Working end-to-end via redirect (Mollie hosts the actual UI):

  • Generic Mollie gateway (Mollie's full method picker)
  • iDEAL
  • Bancontact
  • Credit card (redirect by default; PCI-SAQ-A inline checkout via Mollie Components — toggle "Use Mollie Components" + Profile ID in the admin section)
  • PayPal
  • Apple Pay (redirect only — express button on cart/PDP not yet)
  • Bank Transfer
  • SEPA Direct Debit
  • Gift Card
  • Google Pay
  • Trustly
  • TWINT (Switzerland)
  • BLIK (Poland)
  • Przelewy24 (Poland)
  • EPS (Austria)
  • Belfius (Belgium)
  • Bizum (Spain)
  • MyBank (Italy / Spain)
  • Satispay (Italy)
  • BANCOMAT Pay (Italy)
  • Multibanco (Portugal)
  • MB WAY (Portugal)
  • Payconiq (Belgium / NL / Lux)
  • MobilePay (Denmark / Finland)
  • Swish (Sweden)
  • Vipps (Norway)
  • Pay by Bank (UK)
  • paysafecard

Not bundled at all (Mollie supports them; this module has no method block, model, or config):

  • Klarna Pay Later / Pay Now / Slice It — need the Orders API to send orderLines
  • iDEAL in3 — needs Orders API
  • Riverty — needs Orders API
  • KBC / CBC (Belgium) — needs issuer selection
  • Voucher (meal-voucher schemes — Edenred, Sodexo, etc.) — needs per-product category mapping
  • Alma, Billie — BNPL, need the Orders API
  • POS (point-of-sale) — needs terminal picker
  • SOFORT Banking (deprecated by Mollie — listed for completeness)

Features

  • Online refunds from admin via Mollie API (full + partial)
  • Webhook-driven payment status reconciliation (all mollie_* method codes, not just the generic gateway)
  • Cron-based safety net for missed webhooks (5-minute interval, 24-hour lookback)
  • Admin-configurable pending / processing order statuses, per payment method
  • External-refund and chargeback reconciliation (creditmemo from Mollie dashboard refunds; chargeback order comments only)
  • Multi-store API key scoping
  • Admin "Test API Key" button (one-click connectivity check)
  • Debug logging toggle (gates info-level entries in var/log/mollie.log)
  • Translations for Dutch, German, French, Italian, and Spanish
  • DB-level idempotency lock on the capture path (today only an in-memory hasInvoices() check)
  • Multi-currency support (code paths present but not verified end-to-end)
  • Second-chance payment email
  • Vault / stored cards
  • Mollie Components (hosted card fields) — opt-in per store via admin
  • Payment-link generation from admin
  • Shipment push to Mollie (Orders API)

Acknowledgements

Architecture and feature set informed by the official mollie/magento2 module by Magmodules (OSL-3.0). This module is an independent Maho implementation; no code is copied, but the integration shape and feature surface follow the upstream as a reference.

License

This module is licensed under the Open Software License v3.0.

Links

About

Mollie payment gateway integration for Maho Commerce.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages