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); }
public async Task <IActionResult> NGeniusWebhook(NGeniusWebhookRequest request) { await _nGeniusWebhookProcessingService.ProcessWebHook(request); return(Ok()); }