PPv2: ISU: Retry up to three times to retrieve connected merchant information before failing.

This commit is contained in:
Martin Gross
2022-06-07 17:25:39 +02:00
parent 7cefd69b4e
commit 87b3f91ad3

View File

@@ -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):