async public Task <StatusMessages> ExpensivePaymentGateway(PaymentCardDetails _PaymentCardDetails) { StatusMessages _StatusMessages = new StatusMessages(); var _SampleCardDetails = await SampleCardDetails(_PaymentCardDetails); if (_SampleCardDetails != null) { _StatusMessages.Status = "Success"; _StatusMessages.Message = "Success"; } else { var TryCheapPaymentGateway = await CheapPaymentGateway(_PaymentCardDetails); if (TryCheapPaymentGateway != null) { _StatusMessages.Status = "Success"; _StatusMessages.Message = "Success"; } else { _StatusMessages.Status = "Failed"; _StatusMessages.Message = "Not Found"; } } return(_StatusMessages); }
async public Task <StatusMessages> PremiumPaymentService(PaymentCardDetails _PaymentCardDetails) { StatusMessages _StatusMessages = new StatusMessages(); var _SampleCardDetails = await SampleCardDetails(_PaymentCardDetails); if (_SampleCardDetails != null) { _StatusMessages.Status = "Success"; _StatusMessages.Message = "Success"; } else { for (var k = 0; k < 1; k++) { _SampleCardDetails = await SampleCardDetails(_PaymentCardDetails); if (_SampleCardDetails != null) { _StatusMessages.Status = "Success"; _StatusMessages.Message = "Success"; break; } else { _StatusMessages.Status = "Failed"; _StatusMessages.Message = "Not Found"; } } } return(_StatusMessages); }
async public Task <StatusMessages> SavePaymentStatus(PaymentCardDetails _PaymentCardDetails) { StatusMessages _StatusMessages = new StatusMessages(); await _PaymentAccessPortalContext.AddAsync(_PaymentCardDetails); _PaymentAccessPortalContext.SaveChanges(); return(_StatusMessages); }
async public Task <PaymentCardDetails> SampleCardDetails(PaymentCardDetails _PaymentCardDetails) { var paymentCardDetails = await Task.FromResult(PaymentSampleCardDetails._PaymentSampleCardDetails. FirstOrDefault(x => x.CreditCardNumber == _PaymentCardDetails.CreditCardNumber && x.CardHolder == _PaymentCardDetails.CardHolder && x.Amount > _PaymentCardDetails.Amount)); if (paymentCardDetails == null) { return(null); } return(await Task.FromResult(paymentCardDetails)); }
public async void ProcessPayment() { //Arrange // var controllerr = new PaymentController(_IPaymentGateway, _ICheapPaymentGateway, _IExpensivePaymentGateway, _IPremiumPaymentService); var _PaymentCardDetails = new PaymentCardDetails { CreditCardNumber = "5105105105105100", CardHolder = "Dolapo", SecurityCode = "12345", Amount = 30, ExpirationDate = Convert.ToDateTime("12/12/2021") }; //Act var data = await _controller.ProcessPayment(_PaymentCardDetails); //Assert Assert.IsType <OkObjectResult>(data); }
public bool ValidateCardDetails(PaymentCardDetails ClientCardDetails) { var CardExpDate = Convert.ToDateTime(ClientCardDetails.ExpirationDate); var CurrentDate = Convert.ToDateTime(DateTime.Today); if (ClientCardDetails.CardHolder == "" || ClientCardDetails.CardHolder == null) { return(false); } else if (CurrentDate > CardExpDate) { return(false); } else if (ClientCardDetails.Amount < 0) { return(false); } return(true); }
public async Task <IActionResult> ProcessPayment([FromBody] PaymentCardDetails ClientCardDetails) { StatusMessages statusMessages = new StatusMessages(); try { PaymentCardDetails _PaymentCardDetails = new PaymentCardDetails(); var ValidateCard = ValidateCreditCard(ClientCardDetails.CreditCardNumber); if (ValidateCard == false) { statusMessages.Status = "failed"; statusMessages.Message = "Invalid credit card Details"; return(BadRequest(statusMessages)); } else if (ValidateCardDetails(ClientCardDetails) == false) { statusMessages.Status = "failed"; statusMessages.Message = "The request is invalid:"; return(BadRequest(statusMessages)); } else { if (ClientCardDetails.Amount < 20) { var MakePayment = await _ICheapPaymentGateway.CheapPaymentGateway(ClientCardDetails); if (MakePayment.Status == "Success") { ClientCardDetails.PaymentState = "processed"; await _IPaymentGateway.SavePaymentStatus(ClientCardDetails); statusMessages.Status = "Success"; statusMessages.Message = MakePayment.Message; } else { ClientCardDetails.PaymentState = "failed"; await _IPaymentGateway.SavePaymentStatus(ClientCardDetails); statusMessages.Status = "failed"; statusMessages.Message = MakePayment.Message; return(BadRequest(statusMessages)); } } else if (ClientCardDetails.Amount > 20 && ClientCardDetails.Amount < 500) { var MakePayment = await _IExpensivePaymentGateway.ExpensivePaymentGateway(ClientCardDetails); if (MakePayment.Status == "Success") { ClientCardDetails.PaymentState = "processed"; await _IPaymentGateway.SavePaymentStatus(ClientCardDetails); statusMessages.Status = "Success"; statusMessages.Message = MakePayment.Message; } else { ClientCardDetails.PaymentState = "failed"; await _IPaymentGateway.SavePaymentStatus(ClientCardDetails); statusMessages.Status = "failed"; statusMessages.Message = MakePayment.Message; return(BadRequest(statusMessages)); } } else if (ClientCardDetails.Amount > 500) { var MakePayment = await _IPremiumPaymentService.PremiumPaymentService(ClientCardDetails); if (MakePayment.Status == "Success") { ClientCardDetails.PaymentState = "processed"; await _IPaymentGateway.SavePaymentStatus(ClientCardDetails); statusMessages.Status = "Success"; statusMessages.Message = MakePayment.Message; } else { statusMessages.Status = "failed"; statusMessages.Message = MakePayment.Message; ClientCardDetails.PaymentState = "pending"; await _IPaymentGateway.SavePaymentStatus(ClientCardDetails); return(BadRequest(statusMessages)); } } } return(Ok(statusMessages)); } catch (Exception ex) { var result = StatusCode(StatusCodes.Status500InternalServerError, ex); return(result); } }