From ef623f467130077bdd28812214027da99e61b8e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Mei=C3=9Felbach?= Date: Tue, 31 Mar 2026 15:33:56 +0200 Subject: [PATCH] Prevent duplicate processing for orders with final status or already paid in Mollie WebhookHandler --- src/Payment/Webhooks/WebhookHandler.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Payment/Webhooks/WebhookHandler.php b/src/Payment/Webhooks/WebhookHandler.php index 6e77b0e20..43e08dc1a 100644 --- a/src/Payment/Webhooks/WebhookHandler.php +++ b/src/Payment/Webhooks/WebhookHandler.php @@ -378,7 +378,18 @@ public function onWebhookExpired( $this->logger->debug(__METHOD__ . ' called for order ' . $orderId); - if (!$order->needs_payment()) { + if ($mollieObject->isFinalOrderStatus($order)) { + $this->logger->debug( + __METHOD__ . " called for order {$orderId} has final status. Nothing to be done" + ); + return; + } + + $alreadyPaid = !$order->needs_payment() + || $order->get_status() === 'processing' + || $order->get_meta('_mollie_paid_and_processed', true); + + if ($alreadyPaid) { $this->logger->log( LogLevel::DEBUG, __METHOD__ . ' called for order ' . $orderId