public void ProcessCreditCard(PaymentDetails paymentDetails, decimal amount) { using (var paymentGateway = new PaymentGateway()) { try { paymentGateway.Credentials = "account credentials"; paymentGateway.CardNumber = paymentDetails.CreditCardNumber; paymentGateway.ExpiresMonth = paymentDetails.ExpiresMonth; paymentGateway.ExpiresYear = paymentDetails.ExpiresYear; paymentGateway.NameOnCard = paymentDetails.CardholderName; paymentGateway.AmountToCharge = amount; paymentGateway.Charge(); } catch (AvsMismatchException ex) { throw new OrderException("The card gateway rejected the card based on the address provided.", ex); } catch (Exception ex) { throw new OrderException("There was a problem with your card.", ex); } } }
public OnlineOrder(Cart cart, PaymentDetails paymentDetails, IPaymentProcessor paymentProcessor, IReservationService reservationService, INotificationService notificationService) : base(cart) { _paymentDetails = paymentDetails; _paymentProcessor = paymentProcessor; _reservationService = reservationService; _notificationService = notificationService; }
public void NotFailWithNoItemsNotificationNoCreditCard() { var paymentProcessor = new FakePaymentProcessor(); var reservationService = new FakeReservationService(); var notificationService = new FakeNotificationService(); var cart = new Cart() { CustomerEmail = "*****@*****.**" }; var paymentDetails = new PaymentDetails() { PaymentMethod = PaymentMethod.CreditCard }; var order = new OnlineOrder(cart, paymentDetails, paymentProcessor, reservationService, notificationService); order.Checkout(); // if I got here, I guess it worked... }
public void SendTotalAmountToCreditCardProcessor() { var paymentProcessor = new FakePaymentProcessor(); var reservationService = new FakeReservationService(); var notificationService = new FakeNotificationService(); var cart = new Cart {TotalAmount = 5.05m}; var paymentDetails = new PaymentDetails() { PaymentMethod = PaymentMethod.CreditCard }; var order = new OnlineOrder(cart, paymentDetails, paymentProcessor, reservationService, notificationService); order.Checkout(); Assert.IsTrue(paymentProcessor.WasCalled); Assert.AreEqual(cart.TotalAmount, paymentProcessor.AmountPassed); }
public void ProcessCreditCard(PaymentDetails paymentDetails, decimal amount) { WasCalled = true; AmountPassed = amount; }