public void TestFailingCreditCardPayment()
        {
            //Arrange
            IPaymentsDao         paymentsDao         = new PaymentsDao();
            ICreditCardProcessor creditCardProcessor = new CreditCardProcessor();
            IEftProcessor        eftProcessor        = new EftProcessor();

            PaymentProcessor.PaymentProcessor paymentProcessor =
                new PaymentProcessor.PaymentProcessor(creditCardProcessor, eftProcessor, paymentsDao);

            CreditCardPaymentData creditCardPayment = new CreditCardPaymentData()
            {
                CreditCardNumber = SampleData.CARD_NUMBER_ONE,
                ExpirationDate   = "10/2019",
                Cvv = "755",
                CustomerAccountNumber = "00012345",
                PaymentDate           = DateTime.Today,
                BillingZipCode        = "60067",
                CardholderName        = "John Doe",
                PaymentType           = PaymentType.CREDIT_CARD,
                Amount = 10000.00m
            };

            // Act
            PaymentResult result = paymentProcessor.ProcessPayment(creditCardPayment);

            // Assert
            Assert.False(result.Success);
            Assert.Equal(15, result.ReferenceNumber);
        }
        public PaymentResult ProcessPayment(PaymentDataBase paymentData)
        {
            CreditCardPaymentData creditCardData = paymentData as CreditCardPaymentData;

            CreditCardResult authResult = this.creditCardProcessor.AuthorizeCreditCard(creditCardData.CreditCardNumber,
                                                                                       creditCardData.ExpirationDate, creditCardData.Cvv, creditCardData.BillingZipCode, creditCardData.Amount);

            if (authResult.Authorized == true)
            {
                int referenceNumber = paymentsDao.SaveSuccessfulCreditCardPayment(creditCardData, authResult);

                PaymentResult paymentResult = new PaymentResult()
                {
                    CustomerAccountNumber = creditCardData.CustomerAccountNumber,
                    PaymentDate           = creditCardData.PaymentDate,
                    Success         = authResult.Authorized,
                    ReferenceNumber = referenceNumber
                };
                return(paymentResult);
            }
            else
            {
                int referenceNumber = paymentsDao.SaveFailedCreditCardPayment(creditCardData, authResult);

                PaymentResult paymentResult = new PaymentResult()
                {
                    CustomerAccountNumber = creditCardData.CustomerAccountNumber,
                    PaymentDate           = creditCardData.PaymentDate,
                    Success         = authResult.Authorized,
                    ReferenceNumber = referenceNumber
                };
                return(paymentResult);
            }
        }
Example #3
0
        public void TestSuccessfulCreditCardPayment()
        {
            //Arrange
            IPaymentsDao paymentsDao = new PaymentsDao();

            var creditCardHandler = new CreditCardPaymentTypeHandler(new CreditCardService(), paymentsDao);
            var eftHandler        = new EftPaymentTypeHandler(new EftProcessor(), paymentsDao);
            var checkHandler      = new CheckPaymentTypeHandler(paymentsDao);

            creditCardHandler.NextPaymentHandler = eftHandler;
            eftHandler.NextPaymentHandler        = checkHandler;

            var paymentProcessor = new PaymentProcessor(creditCardHandler);

            CreditCardPaymentData creditCardPayment = new CreditCardPaymentData()
            {
                CreditCardNumber = SampleData.CARD_NUMBER_ONE,
                ExpirationDate   = "10/2019",
                Cvv = "755",
                CustomerAccountNumber = "00012345",
                PaymentDate           = DateTime.Today,
                BillingZipCode        = "60067",
                CardholderName        = "John Doe",
                PaymentType           = PaymentType.CREDIT_CARD,
                Amount = 100.00m
            };

            // Act
            PaymentResult result = paymentProcessor.ProcessPayment(creditCardPayment);

            // Assert
            Assert.True(result.Success);
            Assert.Equal(10, result.ReferenceNumber);
        }
        public override PaymentResult TryProcessPayment(PaymentDataBase paymentData)
        {
            if (paymentData.PaymentType == PaymentType.CREDIT_CARD)
            {
                CreditCardPaymentData creditCardData = paymentData as CreditCardPaymentData;

                CreditCardResult authResult = this.creditCardProcessor.AuthorizeCreditCard(creditCardData.CreditCardNumber,
                                                                                           creditCardData.ExpirationDate, creditCardData.Cvv, creditCardData.BillingZipCode, creditCardData.Amount);

                if (authResult.Authorized == true)
                {
                    int referenceNumber = paymentsDao.SaveSuccessfulCreditCardPayment(creditCardData, authResult);

                    PaymentResult paymentResult = new PaymentResult()
                    {
                        CustomerAccountNumber = creditCardData.CustomerAccountNumber,
                        PaymentDate           = creditCardData.PaymentDate,
                        Success         = authResult.Authorized,
                        ReferenceNumber = referenceNumber
                    };
                    return(paymentResult);
                }
                else
                {
                    int referenceNumber = paymentsDao.SaveFailedCreditCardPayment(creditCardData, authResult);

                    PaymentResult paymentResult = new PaymentResult()
                    {
                        CustomerAccountNumber = creditCardData.CustomerAccountNumber,
                        PaymentDate           = creditCardData.PaymentDate,
                        Success         = authResult.Authorized,
                        ReferenceNumber = referenceNumber
                    };
                    return(paymentResult);
                }
            }
            else if (this.NextPaymentTypeHandler != null)
            {
                return(this.NextPaymentTypeHandler.TryProcessPayment(paymentData));
            }
            else
            {
                throw new ApplicationException("Unknown payment type");
            }
        }
        public void TestSuccessfulCreditCardPayment()
        {
            //Arrange
            PaymentProcessor      paymentProcessor  = this.CreatePaymentProcessor();
            CreditCardPaymentData creditCardPayment = new CreditCardPaymentData()
            {
                CreditCardNumber = SampleData.CARD_NUMBER_ONE,
                ExpirationDate   = "10/2019",
                Cvv = "755",
                CustomerAccountNumber = "00012345",
                PaymentDate           = DateTime.Today,
                BillingZipCode        = "60067",
                CardholderName        = "John Doe",
                Amount = 100.00m
            };

            // Act
            PaymentResult result = paymentProcessor.ProcessPayment(creditCardPayment);

            // Assert
            Assert.True(result.Success);
            Assert.Equal(10, result.ReferenceNumber);
        }
 public int SaveFailedCreditCardPayment(CreditCardPaymentData creditCardData, CreditCardResult result)
 {
     // This would save to a database
     return(15);
 }
        public int SaveSuccessfulCreditCardPayment(CreditCardPaymentData creditCardData, CreditCardResult result)
        {
            // This would save to a database

            return(10);
        }