From 89f1ce8976cfab7e9113e30e625df9e1f741033a Mon Sep 17 00:00:00 2001 From: Lukas Bockstaller Date: Mon, 10 Aug 2026 14:57:05 +0200 Subject: [PATCH] make debounce timeout for pending paypal payments configurable --- src/pretix/plugins/paypal2/payment.py | 6 ++++-- src/pretix/plugins/paypal2/signals.py | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pretix/plugins/paypal2/payment.py b/src/pretix/plugins/paypal2/payment.py index 8eeb50adb7..2cbe55831a 100644 --- a/src/pretix/plugins/paypal2/payment.py +++ b/src/pretix/plugins/paypal2/payment.py @@ -55,7 +55,7 @@ from pretix.base.forms import SecretKeySettingsField from pretix.base.forms.questions import guess_country from pretix.base.models import Event, Order, OrderPayment, OrderRefund, Quota from pretix.base.payment import BasePaymentProvider, PaymentException -from pretix.base.settings import SettingsSandbox +from pretix.base.settings import GlobalSettingsObject, SettingsSandbox from pretix.helpers import OF_SELF from pretix.helpers.urls import mainreverse_absolute from pretix.multidomain.urlreverse import eventreverse, eventreverse_absolute @@ -521,8 +521,10 @@ class PaypalMethod(BasePaymentProvider): def abort_pending_payment_allowed(self, payment): if payment.info_data.get('create_time', False): + gs = GlobalSettingsObject() + debounce_timeout = timedelta(minutes=gs.settings.payment_paypal_abort_pending_payment_allowed_timeout) create_time = datetime.fromisoformat(payment.info_data['create_time']) - if datetime.now(tz=timezone.utc) - create_time > timedelta(minutes=30): + if datetime.now(tz=timezone.utc) - create_time > debounce_timeout: return True if payment.info_data.get('status', None) == "APPROVED": diff --git a/src/pretix/plugins/paypal2/signals.py b/src/pretix/plugins/paypal2/signals.py index 00932625ce..b32bf023cc 100644 --- a/src/pretix/plugins/paypal2/signals.py +++ b/src/pretix/plugins/paypal2/signals.py @@ -99,6 +99,10 @@ def register_global_settings(sender, **kwargs): ('sandbox', 'Sandbox'), ), )), + ('payment_paypal_abort_pending_payment_allowed_timeout', forms.IntegerField( + label=_('Debounce timeout (minutes) after which it is possible to abort a PENDING_REVIEW payment.'), + initial=30, + )), ])