diff --git a/src/pretix/api/views/order.py b/src/pretix/api/views/order.py index fb3051f828..f3f91a0179 100644 --- a/src/pretix/api/views/order.py +++ b/src/pretix/api/views/order.py @@ -1541,19 +1541,24 @@ class PaymentViewSet(CreateModelMixin, viewsets.ReadOnlyModelViewSet): amount=amount, provider=payment.provider ) + payment.order.log_action('pretix.event.order.refund.created', { + 'local_id': r.local_id, + 'provider': r.provider, + }, user=self.request.user if self.request.user.is_authenticated else None, auth=self.request.auth) try: r.payment_provider.execute_refund(r) except PaymentException as e: r.state = OrderRefund.REFUND_STATE_FAILED r.save() + payment.order.log_action('pretix.event.order.refund.failed', { + 'local_id': r.local_id, + 'provider': r.provider, + 'error': str(e) + }) return Response({'detail': 'External error: {}'.format(str(e))}, status=status.HTTP_400_BAD_REQUEST) else: - payment.order.log_action('pretix.event.order.refund.created', { - 'local_id': r.local_id, - 'provider': r.provider, - }, user=self.request.user if self.request.user.is_authenticated else None, auth=self.request.auth) if payment.order.pending_sum > 0: if mark_refunded: mark_order_refunded(payment.order, diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index f558126f8a..c213928e96 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -1071,6 +1071,12 @@ class OrderRefundView(OrderView): else: any_success = True + if r.state == OrderRefund.REFUND_STATE_DONE: + self.order.log_action('pretix.event.order.refund.done', { + 'local_id': r.local_id, + 'provider': r.provider, + }, user=self.request.user) + if any_success: if self.start_form.cleaned_data.get('action') == 'mark_refunded': if self.order.cancel_allowed():