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) response = prov.client.execute(req)
except IOError as e: except IOError as e:
messages.error(request, _('An error occurred during connecting with PayPal, please try again.')) retry = request.GET.get('retry', 0)
logger.exception('PayPal PartnersMerchantIntegrationsGetRequest: {}'.format(str(e))) 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: else:
params = ['merchant_id', 'tracking_id', 'payments_receivable', 'primary_email_confirmed'] params = ['merchant_id', 'tracking_id', 'payments_receivable', 'primary_email_confirmed']
if not any(k in response.result for k in params): if not any(k in response.result for k in params):