public void TestSuccessfulEftPayment() { //Arrange IPaymentsDao paymentsDao = new PaymentsDao(); ICreditCardProcessor creditCardProcessor = new CreditCardProcessor(); IEftProcessor eftProcessor = new EftProcessor(); PaymentProcessor.PaymentProcessor paymentProcessor = new PaymentProcessor.PaymentProcessor(creditCardProcessor, eftProcessor, paymentsDao); EftPaymentData eftPaymentData = new EftPaymentData() { CustomerAccountNumber = "00012345", PaymentDate = DateTime.Today, PaymentType = PaymentType.EFT, Amount = 100.00m, RoutingNumber = SampleData.BANK_ROUTING_ONE, BankAccountNumber = SampleData.BANK_ACCOUNT_ONE, AccountType = BankAccountType.CHECKING }; // Act PaymentResult result = paymentProcessor.ProcessPayment(eftPaymentData); // Assert Assert.True(result.Success); Assert.Equal(20, result.ReferenceNumber); }
public void TestFailingEftPayment() { //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); EftPaymentData eftPaymentData = new EftPaymentData() { CustomerAccountNumber = "00012345", PaymentDate = DateTime.Today, PaymentType = PaymentType.EFT, Amount = 100.00m, RoutingNumber = SampleData.BANK_ROUTING_ONE, BankAccountNumber = SampleData.BANK_ACCOUNT_TWO, AccountType = BankAccountType.CHECKING }; // Act PaymentResult result = paymentProcessor.ProcessPayment(eftPaymentData); // Assert Assert.False(result.Success); Assert.Equal(25, result.ReferenceNumber); }
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 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 void TestFailingEftPayment() { //Arrange PaymentProcessor paymentProcessor = this.CreatePaymentProcessor(); EftPaymentData eftPaymentData = new EftPaymentData() { CustomerAccountNumber = "00012345", PaymentDate = DateTime.Today, Amount = 100.00m, RoutingNumber = SampleData.BANK_ROUTING_ONE, BankAccountNumber = SampleData.BANK_ACCOUNT_TWO, AccountType = BankAccountType.CHECKING }; // Act PaymentResult result = paymentProcessor.ProcessPayment(eftPaymentData); // Assert Assert.False(result.Success); Assert.Equal(25, result.ReferenceNumber); }
public int SaveFailedEftPayment(EftPaymentData eftData, EftAuthorization result) { // This would save to a database return(25); }
public int SaveSuccessfulEftPayment(EftPaymentData eftData, EftAuthorization result) { // This would save to a database return(20); }