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);
        }
예제 #2
0
        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));
        }