# mollie/prestashop architecture

> Architecture diagram of the GitHub repository mollie/prestashop, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mollie/prestashop
- Repository: https://github.com/mollie/prestashop
- Video tour (about a minute): https://gitdiagram.com/mollie/prestashop/video

## Overview

Mollie for PrestaShop adds payment checkout and back-office configuration to an online store. The main customer flow selects a Mollie method, starts payment through Mollie, and returns to the store; webhook endpoints handle asynchronous updates. Separate capabilities include recurring subscriptions, Apple Pay Direct, and payment-method and order settings. The tree and README establish these product areas; sampled source confirms selected controller, API-handler, and subscription-grid behavior, but not every endpoint’s wiring.

Main entry points: [`controllers/front/payment.php`](https://github.com/mollie/prestashop/blob/master/controllers/front/payment.php) (Payment Entry), [`controllers/admin/AdminMolliePaymentMethodsController.php`](https://github.com/mollie/prestashop/blob/master/controllers/admin/AdminMolliePaymentMethodsController.php) (Payment Settings), [`src/Handler/Order/OrderCreationHandler.php`](https://github.com/mollie/prestashop/blob/master/src/Handler/Order/OrderCreationHandler.php) (Order Creation), [`subscription/Action/CreateRecurringOrderAction.php`](https://github.com/mollie/prestashop/blob/master/subscription/Action/CreateRecurringOrderAction.php) (Recurring Orders)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_checkout["Checkout Payments"]
  node_paymententry["Payment Entry<br/>[payment.php]"]
  node_methods["Payment Methods"]
  node_apiservice["API Service<br/>[ApiService.php]"]
  node_appleapi["Apple Pay API<br/>[ApiService.php]"]
end

subgraph group_lifecycle["Order Lifecycle"]
  node_returns["Payment Return<br/>[return.php]"]
  node_webhook["Payment Webhook<br/>[webhook.php]"]
  node_ordercreation["Order Creation"]
  node_orders[("Store Orders")]
end

subgraph group_admin["Merchant Administration"]
  node_adminconfig["Payment Settings"]
  node_advanced["Order Settings"]
end

subgraph group_subscriptions["Recurring Subscriptions"]
  node_subscriptionsadmin["Subscription Admin"]
  node_subgrid["Subscription Grid"]
  node_subwebhook["Subscription Webhooks"]
  node_subupdate["Subscription Updates"]
  node_recurring["Recurring Orders"]
  node_subapi["Subscription API"]
end

subgraph group_applepay["Apple Pay Direct"]
  node_appleajax["Apple Pay AJAX"]
  node_applehandler["Session Handler"]
end

node_customer(("Shopper"))
node_adminuser(("Store Admin"))
node_prestashop["PrestaShop"]
node_mollie["Mollie API"]

node_customer -->|"starts checkout"| node_paymententry
node_paymententry -->|"offers methods"| node_methods
node_paymententry -->|"starts payment"| node_apiservice
node_apiservice -->|"calls API"| node_mollie
node_mollie -->|"redirects back"| node_returns
node_mollie -->|"sends updates"| node_webhook
node_returns -->|"handles return"| node_ordercreation
node_webhook -->|"updates order"| node_ordercreation
node_ordercreation -->|"persists order"| node_orders
node_adminuser -->|"configures methods"| node_adminconfig
node_adminuser -->|"configures orders"| node_advanced
node_adminconfig -->|"retrieves methods"| node_mollie
node_adminconfig -->|"saves settings"| node_prestashop
node_advanced -->|"saves settings"| node_prestashop
node_adminuser -->|"manages subscriptions"| node_subscriptionsadmin
node_subscriptionsadmin -->|"loads grid"| node_subgrid
node_subgrid -->|"queries store data"| node_orders
node_mollie -->|"sends events"| node_subwebhook
node_mollie -->|"sends updates"| node_subupdate
node_subwebhook -->|"handles lifecycle"| node_recurring
node_subupdate -->|"updates recurring"| node_recurring
node_recurring -->|"uses subscription API"| node_subapi
node_customer -.->|"requests Apple Pay"| node_appleajax
node_appleajax -.->|"dispatches command"| node_applehandler
node_applehandler -->|"requests session"| node_appleapi
node_appleapi -->|"requests session"| node_mollie

click node_paymententry "https://github.com/mollie/prestashop/blob/master/controllers/front/payment.php"
click node_methods "https://github.com/mollie/prestashop/blob/master/src/Handler/PaymentOption/PaymentOptionHandler.php"
click node_apiservice "https://github.com/mollie/prestashop/blob/master/src/Service/ApiService.php"
click node_returns "https://github.com/mollie/prestashop/blob/master/controllers/front/return.php"
click node_webhook "https://github.com/mollie/prestashop/blob/master/controllers/front/webhook.php"
click node_ordercreation "https://github.com/mollie/prestashop/blob/master/src/Handler/Order/OrderCreationHandler.php"
click node_orders "https://github.com/mollie/prestashop/blob/master/src/Repository/OrderRepository.php"
click node_adminconfig "https://github.com/mollie/prestashop/blob/master/controllers/admin/AdminMolliePaymentMethodsController.php"
click node_advanced "https://github.com/mollie/prestashop/blob/master/controllers/admin/AdminMollieAdvancedSettingsController.php"
click node_subscriptionsadmin "https://github.com/mollie/prestashop/blob/master/subscription/Controller/Symfony/SubscriptionController.php"
click node_subgrid "https://github.com/mollie/prestashop/blob/master/subscription/Grid/SubscriptionGridQueryBuilder.php"
click node_subwebhook "https://github.com/mollie/prestashop/blob/master/controllers/front/subscriptionWebhook.php"
click node_subupdate "https://github.com/mollie/prestashop/blob/master/controllers/front/subscriptionUpdateWebhook.php"
click node_recurring "https://github.com/mollie/prestashop/blob/master/subscription/Action/CreateRecurringOrderAction.php"
click node_subapi "https://github.com/mollie/prestashop/blob/master/subscription/Api/SubscriptionApi.php"
click node_appleajax "https://github.com/mollie/prestashop/blob/master/controllers/front/applePayDirectAjax.php"
click node_applehandler "https://github.com/mollie/prestashop/blob/master/src/Application/CommandHandler/RequestApplePayPaymentSessionHandler.php"
click node_appleapi "https://github.com/mollie/prestashop/blob/master/src/Service/ApiService.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_paymententry,node_methods,node_apiservice,node_appleapi toneBlue
class node_returns,node_webhook,node_ordercreation,node_orders toneAmber
class node_adminconfig,node_advanced,node_mollie toneMint
class node_subscriptionsadmin,node_subgrid,node_subwebhook,node_subupdate,node_recurring,node_subapi toneRose
class node_appleajax,node_applehandler,node_customer,node_adminuser,node_prestashop toneIndigo
```

## Components

### Checkout Payments

- [Payment Entry](https://github.com/mollie/prestashop/blob/master/controllers/front/payment.php): `controllers/front/payment.php`
- [Payment Methods](https://github.com/mollie/prestashop/blob/master/src/Handler/PaymentOption/PaymentOptionHandler.php): `src/Handler/PaymentOption/PaymentOptionHandler.php`
- [API Service](https://github.com/mollie/prestashop/blob/master/src/Service/ApiService.php): `src/Service/ApiService.php`
- [Apple Pay API](https://github.com/mollie/prestashop/blob/master/src/Service/ApiService.php): `src/Service/ApiService.php`

### Order Lifecycle

- [Payment Return](https://github.com/mollie/prestashop/blob/master/controllers/front/return.php): `controllers/front/return.php`
- [Payment Webhook](https://github.com/mollie/prestashop/blob/master/controllers/front/webhook.php): `controllers/front/webhook.php`
- [Order Creation](https://github.com/mollie/prestashop/blob/master/src/Handler/Order/OrderCreationHandler.php): `src/Handler/Order/OrderCreationHandler.php`
- [Store Orders](https://github.com/mollie/prestashop/blob/master/src/Repository/OrderRepository.php): `src/Repository/OrderRepository.php`

### Merchant Administration

- [Payment Settings](https://github.com/mollie/prestashop/blob/master/controllers/admin/AdminMolliePaymentMethodsController.php): `controllers/admin/AdminMolliePaymentMethodsController.php`
- [Order Settings](https://github.com/mollie/prestashop/blob/master/controllers/admin/AdminMollieAdvancedSettingsController.php): `controllers/admin/AdminMollieAdvancedSettingsController.php`

### Recurring Subscriptions

- [Subscription Admin](https://github.com/mollie/prestashop/blob/master/subscription/Controller/Symfony/SubscriptionController.php): `subscription/Controller/Symfony/SubscriptionController.php`
- [Subscription Grid](https://github.com/mollie/prestashop/blob/master/subscription/Grid/SubscriptionGridQueryBuilder.php): `subscription/Grid/SubscriptionGridQueryBuilder.php`
- [Subscription Webhooks](https://github.com/mollie/prestashop/blob/master/controllers/front/subscriptionWebhook.php): `controllers/front/subscriptionWebhook.php`
- [Subscription Updates](https://github.com/mollie/prestashop/blob/master/controllers/front/subscriptionUpdateWebhook.php): `controllers/front/subscriptionUpdateWebhook.php`
- [Recurring Orders](https://github.com/mollie/prestashop/blob/master/subscription/Action/CreateRecurringOrderAction.php): `subscription/Action/CreateRecurringOrderAction.php`
- [Subscription API](https://github.com/mollie/prestashop/blob/master/subscription/Api/SubscriptionApi.php): `subscription/Api/SubscriptionApi.php`

### Apple Pay Direct

- [Apple Pay AJAX](https://github.com/mollie/prestashop/blob/master/controllers/front/applePayDirectAjax.php): `controllers/front/applePayDirectAjax.php`
- [Session Handler](https://github.com/mollie/prestashop/blob/master/src/Application/CommandHandler/RequestApplePayPaymentSessionHandler.php): `src/Application/CommandHandler/RequestApplePayPaymentSessionHandler.php`

### Other components

- **Shopper**
- **Store Admin**
- **PrestaShop**
- **Mollie API**

## Connections

- Shopper → Payment Entry: starts checkout
- Payment Entry → Payment Methods: offers methods
- Payment Entry → API Service: starts payment
- API Service → Mollie API: calls API
- Mollie API → Payment Return: redirects back
- Mollie API → Payment Webhook: sends updates
- Payment Return → Order Creation: handles return
- Payment Webhook → Order Creation: updates order
- Order Creation → Store Orders: persists order
- Store Admin → Payment Settings: configures methods
- Store Admin → Order Settings: configures orders
- Payment Settings → Mollie API: retrieves methods
- Payment Settings → PrestaShop: saves settings
- Order Settings → PrestaShop: saves settings
- Store Admin → Subscription Admin: manages subscriptions
- Subscription Admin → Subscription Grid: loads grid
- Subscription Grid → Store Orders: queries store data
- Mollie API → Subscription Webhooks: sends events
- Mollie API → Subscription Updates: sends updates
- Subscription Webhooks → Recurring Orders: handles lifecycle
- Subscription Updates → Recurring Orders: updates recurring
- Recurring Orders → Subscription API: uses subscription API
- Shopper → Apple Pay AJAX: requests Apple Pay
- Apple Pay AJAX → Session Handler: dispatches command
- Session Handler → Apple Pay API: requests session
- Apple Pay API → Mollie API: requests session
