mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
PayPal: Do not crash on failed refund
This commit is contained in:
@@ -427,19 +427,22 @@ class Paypal(BasePaymentProvider):
|
|||||||
def execute_refund(self, refund: OrderRefund):
|
def execute_refund(self, refund: OrderRefund):
|
||||||
self.init_api()
|
self.init_api()
|
||||||
|
|
||||||
sale = None
|
try:
|
||||||
for res in refund.payment.info_data['transactions'][0]['related_resources']:
|
sale = None
|
||||||
for k, v in res.items():
|
for res in refund.payment.info_data['transactions'][0]['related_resources']:
|
||||||
if k == 'sale':
|
for k, v in res.items():
|
||||||
sale = paypalrestsdk.Sale.find(v['id'])
|
if k == 'sale':
|
||||||
break
|
sale = paypalrestsdk.Sale.find(v['id'])
|
||||||
|
break
|
||||||
|
|
||||||
pp_refund = sale.refund({
|
pp_refund = sale.refund({
|
||||||
"amount": {
|
"amount": {
|
||||||
"total": self.format_price(refund.amount),
|
"total": self.format_price(refund.amount),
|
||||||
"currency": refund.order.event.currency
|
"currency": refund.order.event.currency
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
except paypalrestsdk.exceptions.ConnectionError as e:
|
||||||
|
raise PaymentException(_('Refunding the amount via PayPal failed: {}').format(str(e)))
|
||||||
if not pp_refund.success():
|
if not pp_refund.success():
|
||||||
raise PaymentException(_('Refunding the amount via PayPal failed: {}').format(pp_refund.error))
|
raise PaymentException(_('Refunding the amount via PayPal failed: {}').format(pp_refund.error))
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user