forked from CGM_Public/pretix_original
Add OrderPayment.fail() to prevent race conditions (#1572)
This commit is contained in:
@@ -297,14 +297,7 @@ def charge_webhook(event, event_json, charge_id, rso):
|
||||
except Quota.QuotaExceededException:
|
||||
pass
|
||||
elif charge['status'] == 'failed' and payment.state in (OrderPayment.PAYMENT_STATE_PENDING, OrderPayment.PAYMENT_STATE_CREATED):
|
||||
payment.info = str(charge)
|
||||
payment.state = OrderPayment.PAYMENT_STATE_FAILED
|
||||
payment.save()
|
||||
payment.order.log_action('pretix.event.order.payment.failed', {
|
||||
'local_id': payment.local_id,
|
||||
'provider': payment.provider,
|
||||
'info': str(charge)
|
||||
})
|
||||
payment.fail(info=str(charge))
|
||||
|
||||
return HttpResponse(status=200)
|
||||
|
||||
@@ -368,14 +361,7 @@ def source_webhook(event, event_json, source_id, rso):
|
||||
logger.exception('Webhook error')
|
||||
|
||||
elif src.status == 'failed':
|
||||
payment.info = str(src)
|
||||
payment.state = OrderPayment.PAYMENT_STATE_FAILED
|
||||
payment.order.log_action('pretix.event.order.payment.failed', {
|
||||
'local_id': payment.local_id,
|
||||
'provider': payment.provider,
|
||||
'info': str(src)
|
||||
})
|
||||
payment.save()
|
||||
payment.fail(info=str(src))
|
||||
elif src.status == 'canceled' and payment.state in (OrderPayment.PAYMENT_STATE_PENDING, OrderPayment.PAYMENT_STATE_CREATED):
|
||||
payment.info = str(src)
|
||||
payment.state = OrderPayment.PAYMENT_STATE_CANCELED
|
||||
@@ -510,14 +496,7 @@ class ReturnView(StripeOrderView, View):
|
||||
self.payment.info = str(src)
|
||||
self.payment.save()
|
||||
else: # failed or canceled
|
||||
self.payment.state = OrderPayment.PAYMENT_STATE_FAILED
|
||||
self.payment.info = str(src)
|
||||
self.payment.save()
|
||||
self.payment.order.log_action('pretix.event.order.payment.failed', {
|
||||
'local_id': self.payment.local_id,
|
||||
'provider': self.payment.provider,
|
||||
'info': str(src)
|
||||
})
|
||||
self.payment.fail(info=str(src))
|
||||
messages.error(self.request, _('We had trouble authorizing your card payment. Please try again and '
|
||||
'get in touch with us if this problem persists.'))
|
||||
return self._redirect_to_order()
|
||||
|
||||
Reference in New Issue
Block a user