public async Task ProcessWebHook(NGeniusWebhookRequest request)
        {
            var eventType      = request.EventName;
            var paymentElement = request.Order.Embedded.Payments[0];
            var paymentId      = paymentElement.Id.Split(':').Last();
            var status         = eventType switch
            {
                EventTypes.Authorised => PaymentStatuses.Authorized,
                EventTypes.Captured => PaymentStatuses.Captured,
                EventTypes.FullAuthReversed => PaymentStatuses.Voided,
                EventTypes.Refunded => PaymentStatuses.Refunded,
                EventTypes.PartiallyRefunded => PaymentStatuses.Refunded,
                EventTypes.Declined => PaymentStatuses.Failed,
                EventTypes.AuthorisationFailed => PaymentStatuses.Failed,
                EventTypes.CaptureFailed => PaymentStatuses.Failed,
                EventTypes.FullAuthReversalFailed => PaymentStatuses.Failed,
                EventTypes.RefundFailed => PaymentStatuses.Failed,
                EventTypes.PartialRefundFailed => PaymentStatuses.Failed,
                EventTypes.ThreeDsNotAuthenticated => PaymentStatuses.Failed
            };

            using var disposable = _logger.BeginScope(new Dictionary <string, object>
            {
                { "ReferenceCode", paymentElement.MerchantOrderReference },
                { "EventType", eventType }
            });
            _logger.LogNGeniusWebhookProcessingStarted();

            await TryUpdatePayment(paymentElement.MerchantOrderReference, paymentId, status);
            await TryUpdatePaymentLink(paymentElement.MerchantOrderReference, status);
        }
Пример #2
0
        public async Task <IActionResult> NGeniusWebhook(NGeniusWebhookRequest request)
        {
            await _nGeniusWebhookProcessingService.ProcessWebHook(request);

            return(Ok());
        }