예제 #1
0
        public override PaymentResult TryProcessPayment(PaymentDataBase paymentData)
        {
            if (paymentData.PaymentType == PaymentType.CHECK)
            {
                CheckPaymentData checkPaymentData = paymentData as CheckPaymentData;

                int           referenceNumber = this.paymentsDao.SaveCheckPayment(checkPaymentData);
                PaymentResult paymentResult   = new PaymentResult()
                {
                    CustomerAccountNumber = checkPaymentData.CustomerAccountNumber,
                    PaymentDate           = checkPaymentData.PaymentDate,
                    Success         = true,
                    ReferenceNumber = referenceNumber
                };
                return(paymentResult);
            }
            else if (this.NextPaymentTypeHandler != null)
            {
                return(this.NextPaymentTypeHandler.TryProcessPayment(paymentData));
            }
            else
            {
                throw new ApplicationException("Unknown payment type");
            }
        }
        public PaymentResult ProcessPayment(PaymentDataBase paymentData)
        {
            EftPaymentData eftPaymentData = paymentData as EftPaymentData;

            EftAuthorization eftResult = this.eftProcessor.AuthorizeEftPayment(eftPaymentData.RoutingNumber,
                                                                               eftPaymentData.BankAccountNumber, eftPaymentData.AccountType, eftPaymentData.Amount);

            if (eftResult.Authorized)
            {
                int referenceNumber = paymentsDao.SaveSuccessfulEftPayment(eftPaymentData, eftResult);

                PaymentResult paymentResult = new PaymentResult()
                {
                    CustomerAccountNumber = eftPaymentData.CustomerAccountNumber,
                    PaymentDate           = eftPaymentData.PaymentDate,
                    Success         = eftResult.Authorized,
                    ReferenceNumber = referenceNumber
                };

                return(paymentResult);
            }
            else
            {
                int referenceNumber = paymentsDao.SaveFailedEftPayment(eftPaymentData, eftResult);

                PaymentResult paymentResult = new PaymentResult()
                {
                    CustomerAccountNumber = eftPaymentData.CustomerAccountNumber,
                    PaymentDate           = eftPaymentData.PaymentDate,
                    Success         = eftResult.Authorized,
                    ReferenceNumber = referenceNumber
                };
                return(paymentResult);
            }
        }
        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);
            }
        }
        public PaymentResult ProcessPayment(PaymentDataBase paymentData)
        {
            var handler = this.paymentHandlers.FirstOrDefault(h => h.CanProcessPayment(paymentData));

            if (handler != null)
            {
                return(handler.ProcessPayment(paymentData));
            }
            else
            {
                throw new ApplicationException("Unable to Process Payment Type");
            }
        }
        public PaymentResult ProcessPayment(PaymentDataBase paymentData)
        {
            CheckPaymentData checkPaymentData = paymentData as CheckPaymentData;

            int           referenceNumber = this.paymentsDao.SaveCheckPayment(checkPaymentData);
            PaymentResult paymentResult   = new PaymentResult()
            {
                CustomerAccountNumber = checkPaymentData.CustomerAccountNumber,
                PaymentDate           = checkPaymentData.PaymentDate,
                Success         = true,
                ReferenceNumber = referenceNumber
            };

            return(paymentResult);
        }
예제 #6
0
        public override PaymentResult TryProcessPayment(PaymentDataBase paymentData)
        {
            if (paymentData.PaymentType == PaymentType.EFT)
            {
                EftPaymentData eftPaymentData = paymentData as EftPaymentData;

                EftAuthorization eftResult = this.eftProcessor.AuthorizeEftPayment(eftPaymentData.RoutingNumber,
                                                                                   eftPaymentData.BankAccountNumber, eftPaymentData.AccountType, eftPaymentData.Amount);

                if (eftResult.Authorized)
                {
                    int referenceNumber = paymentsDao.SaveSuccessfulEftPayment(eftPaymentData, eftResult);

                    PaymentResult paymentResult = new PaymentResult()
                    {
                        CustomerAccountNumber = eftPaymentData.CustomerAccountNumber,
                        PaymentDate           = eftPaymentData.PaymentDate,
                        Success         = eftResult.Authorized,
                        ReferenceNumber = referenceNumber
                    };

                    return(paymentResult);
                }
                else
                {
                    int referenceNumber = paymentsDao.SaveFailedEftPayment(eftPaymentData, eftResult);

                    PaymentResult paymentResult = new PaymentResult()
                    {
                        CustomerAccountNumber = eftPaymentData.CustomerAccountNumber,
                        PaymentDate           = eftPaymentData.PaymentDate,
                        Success         = eftResult.Authorized,
                        ReferenceNumber = referenceNumber
                    };
                    return(paymentResult);
                }
            }
            else if (this.NextPaymentTypeHandler != null)
            {
                return(this.NextPaymentTypeHandler.TryProcessPayment(paymentData));
            }
            else
            {
                throw new ApplicationException("Unknown payment type");
            }
        }
        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");
            }
        }
 /// <summary>
 /// Try to process the payment.  If we can, then we'll return.  Otherwise
 /// we'll call the next payment handler in the chain
 /// </summary>
 /// <param name="paymentData"></param>
 /// <returns></returns>
 public abstract PaymentResult TryProcessPayment(PaymentDataBase paymentData);
 public bool CanProcessPayment(PaymentDataBase paymentData)
 {
     return(paymentData.PaymentType == PaymentType.CREDIT_CARD);
 }
 public bool CanProcessPayment(PaymentDataBase paymentData)
 {
     return(paymentData.PaymentType == PaymentType.CHECK);
 }
예제 #11
0
 public PaymentResult ProcessPayment(PaymentDataBase paymentData)
 {
     return(this.initialPaymentTypeHandler.TryProcessPayment(paymentData));
 }