From bf54222cac501af9904ad5760dce17b95767e628 Mon Sep 17 00:00:00 2001 From: Martin Gross Date: Mon, 5 Aug 2019 12:16:29 +0200 Subject: [PATCH] Handle PayPal-declines if organizer-account is blocked by risk --- src/pretix/plugins/paypal/payment.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/pretix/plugins/paypal/payment.py b/src/pretix/plugins/paypal/payment.py index 668d127f9..2d18e4cbd 100644 --- a/src/pretix/plugins/paypal/payment.py +++ b/src/pretix/plugins/paypal/payment.py @@ -12,6 +12,7 @@ from django.template.loader import get_template from django.urls import reverse from django.utils.http import urlquote from django.utils.translation import ugettext as __, ugettext_lazy as _ +from paypalrestsdk.exceptions import BadRequest from paypalrestsdk.openid_connect import Tokeninfo from pretix.base.decimal import round_decimal @@ -166,7 +167,17 @@ class Paypal(BasePaymentProvider): kwargs['cart_namespace'] = request.resolver_match.kwargs['cart_namespace'] if request.event.settings.payment_paypal_connect_user_id: - userinfo = Tokeninfo.create_with_refresh_token(request.event.settings.payment_paypal_connect_refresh_token).userinfo() + try: + userinfo = Tokeninfo.create_with_refresh_token(request.event.settings.payment_paypal_connect_refresh_token).userinfo() + except BadRequest as ex: + ex = json.loads(ex.content) + messages.error(request, '{}: {} ({})'.format( + _('We had trouble communicating with PayPal'), + ex['error_description'], + ex['correlation_id']) + ) + return + request.event.settings.payment_paypal_connect_user_id = userinfo.email payee = { "email": request.event.settings.payment_paypal_connect_user_id,