From 87b3f91ad353cfcad6331999179277435ff7d0e2 Mon Sep 17 00:00:00 2001 From: Martin Gross Date: Tue, 7 Jun 2022 17:25:39 +0200 Subject: [PATCH] PPv2: ISU: Retry up to three times to retrieve connected merchant information before failing. --- src/pretix/plugins/paypal2/views.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pretix/plugins/paypal2/views.py b/src/pretix/plugins/paypal2/views.py index 1906d9c269..6d58685637 100644 --- a/src/pretix/plugins/paypal2/views.py +++ b/src/pretix/plugins/paypal2/views.py @@ -212,8 +212,16 @@ def isu_return(request, *args, **kwargs): ) response = prov.client.execute(req) except IOError as e: - messages.error(request, _('An error occurred during connecting with PayPal, please try again.')) - logger.exception('PayPal PartnersMerchantIntegrationsGetRequest: {}'.format(str(e))) + retry = request.GET.get('retry', 0) + retry = int(retry) + if retry < 3: + params = request.GET.copy() + params['retry'] = retry + 1 + logger.exception('PayPal PartnersMerchantIntegrationsGetRequest: {}; Retrying.'.format(str(e))) + return redirect('{}?{}'.format(request.path, params.urlencode())) + else: + messages.error(request, _('An error occurred during connecting with PayPal, please try again.')) + logger.exception('PayPal PartnersMerchantIntegrationsGetRequest: {}'.format(str(e))) else: params = ['merchant_id', 'tracking_id', 'payments_receivable', 'primary_email_confirmed'] if not any(k in response.result for k in params):