public void Checkout(ShoppingCart shoppingCart, PaymentDetails paymentDetails, bool notifyCustomer) { if (paymentDetails.PaymentMethod == PaymentMethod.CreditCard) { //Placing a due amount on Credit Card so that user can pay the money at the end ChargeCard(paymentDetails, shoppingCart); } //Reserving the estimated cost for Inventory (Inventory is a comlete list of Items) ReserveInventory(shoppingCart); if (notifyCustomer) { NotifyCustomer(shoppingCart); } }
public void ChargeCard(PaymentDetails paymentDetails, ShoppingCart cart) { PaymentService paymentService = new PaymentService(); try { paymentService.Credentials = "Credentials"; paymentService.CardNumber = paymentDetails.CreditCardNumber; paymentService.ExpiryDate = paymentDetails.ExpiryDate; paymentService.NameOnCard = paymentDetails.CardholderName; paymentService.AmountToCharge = cart.TotalAmount; paymentService.Charge(); } catch (AccountBalanceMismatchException 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); } }
static void Main(string[] args) { OrderItem objItem1 = new OrderItem { Identifier = "Toy", Quantity = 2 }; OrderItem objItem2 = new OrderItem { Identifier = "Utensils", Quantity = 1 }; List <OrderItem> items = new List <OrderItem>(); items.Add(objItem1); items.Add(objItem2); ShoppingCart objCart = new ShoppingCart(); objCart.CustomerEmail = "*****@*****.**"; objCart.Items = items; PaymentDetails objDetails = new PaymentDetails(); objDetails.PaymentMethod = PaymentMethod.CreditCard; Order objOrder = new Order(); objOrder.Checkout(objCart, objDetails, true); }