public IActionResult Post(PaymentRequestVM paymentRequest) { try { if (ModelState.IsValid) { paymentRequest.ExpirationDate = new DateTime(paymentRequest.ExpirationDate.Year, paymentRequest.ExpirationDate.Month, 1); PaymentStatusVM result = service.ProcessPaymentRequest(paymentRequest); if (result.PaymentStatus == Enums.PaymentProcessStatus.processed.ToString()) { return(Ok("Payment is processed")); } else { return(StatusCode(StatusCodes.Status500InternalServerError, "Unable to process payment")); } } else { return(BadRequest("Invalid inputs")); } } catch (Exception ex) { _logger.LogError(ex, ex.Message); return(StatusCode(500, "Internal server error exception raised")); } }
public PaymentStatusVM ProcessPaymentRequest(PaymentRequestVM paymentRequest) { GatewayFactory gatewayFactory = new GatewayFactory(unitOfWork); IPaymentGateway paymentGateway = gatewayFactory.GetPaymentGateway(paymentRequest.Amount); PaymentInfo pi = mapper.Map <PaymentRequestVM, PaymentInfo>(paymentRequest); return(paymentGateway.ProcessPayment(pi)); }