public void MockBankApi_ReponseAccepeted() { var cardApiResult = _cardApiService.ChargeCard(_cardDetail); var cardApiResponse = cardApiResult.Result; var cardPaymentResponse = JsonConvert.DeserializeObject <CardPaymentResponse>(cardApiResponse.Data); Assert.AreEqual(cardPaymentResponse.Status, PaymentStatus.Accepted); }
public async Task <IActionResult> Create([Bind("MerchantId,AccountId,Id,Name,CardNumber,CardExpiry_Month,CardExpiry_Year,CVV,Amount")] CardPaymentDetail cardPaymentDetail) { if (ModelState.IsValid) { cardPaymentDetail.ExternalRefId = Guid.NewGuid(); var merchantConfigs = _merchantConfigRepository.GetById(cardPaymentDetail.MerchantId); var cardApiResponse = await _cardApiService.ChargeCard(cardPaymentDetail); if (cardApiResponse.IsSuccessFull) { var cardPaymentStatus = JsonConvert.DeserializeObject <CardPaymentResponse>(cardApiResponse.Data); // Ideal for this type of situation to use Service bus or some sort of message queue var serviceResponse = _paymentDetailDataService.Save(cardPaymentDetail, cardPaymentStatus.Status); if (cardPaymentStatus.Status == CheckOutAppConstants.PaymentStatus.Accepted) { return(Redirect(merchantConfigs.SuccessRedirectPageUrl)); } else if (cardPaymentStatus.Status == CheckOutAppConstants.PaymentStatus.Declined) { return(Redirect(merchantConfigs.DeclinedRedirectPageUrl)); } } } return(View(cardPaymentDetail)); }