public static void ProcessOrder() { CatalogManager catalogManager = CatalogManager.GetManager(); OrdersManager ordersManager = OrdersManager.GetManager(); Product product = catalogManager.GetProducts().Where(p => p.Title == ExistingProductTitle && p.Status == ContentLifecycleStatus.Live).FirstOrDefault(); CartOrder cartOrder = ordersManager.CreateCartOrder(); cartOrder.OrderDate = DateTime.Now; cartOrder.OrderStatus = OrderStatus.Pending; int orderNumber = ordersManager.GetOrders().LastOrDefault().OrderNumber + 1; cartOrder.OrderNumber = orderNumber; cartOrder.OrderDate = DateTime.Now; cartOrder.LastModified = DateTime.Now; cartOrder.OrderAttempts = 0; var currency = Config.Get <EcommerceConfig>().DefaultCurrency; cartOrder.Currency = currency; Customer customer = ordersManager.GetCustomers().Where(c => c.CustomerFirstName == ExistingCustomerFirstName).FirstOrDefault(); cartOrder.UserId = customer.Id; CartDetail orderDetail = new CartDetail(); orderDetail.Id = Guid.NewGuid(); orderDetail.ProductId = product.Id; orderDetail.Quantity = 1; orderDetail.ProductAvailable = true; orderDetail.Price = product.Price; orderDetail.IsShippable = true; cartOrder.Details.Add(orderDetail); CheckoutState state = UpdateCheckoutState(customer, ordersManager, cartOrder); ordersManager.SaveChanges(); EcommerceOrderCalculator calculator = new EcommerceOrderCalculator(); calculator.CalculateAndSaveChanges(cartOrder); ordersManager.Checkout(cartOrder.Id, state, customer); ordersManager.SaveChanges(); catalogManager.SaveChanges(); }
internal static Tuple<bool, IPaymentResponse> PlaceOrder(OrdersManager ordersManager, CatalogManager catalogManager, UserManager userManager, RoleManager roleManager, UserProfileManager userProfileManager, CheckoutState checkoutState, Guid cartOrderId) { CartOrder cartOrder = ordersManager.GetCartOrder(cartOrderId); cartOrder.Addresses.Clear(); cartOrder.Payments.Clear(); //set the default currency of the order string defaultCurrency = Config.Get<EcommerceConfig>().DefaultCurrency; cartOrder.Currency = defaultCurrency; // set the shipping address CartAddress shippingAddress = CartHelper.GetShippingAddressFromCheckoutState(ordersManager, checkoutState); cartOrder.Addresses.Add(shippingAddress); // set the billing address CartAddress billingAddress = CartHelper.GetBillingAddressFromCheckoutState(ordersManager, checkoutState); cartOrder.Addresses.Add(billingAddress); //Get the first payment method in the shop // set the payment CartPayment payment = CartHelper.GetCartPaymentFromCheckoutState(ordersManager, checkoutState); cartOrder.Payments.Add(payment); ordersManager.SaveChanges(); // Get current customer or create new one Customer customer = UserProfileHelper.GetCustomerInfoOrCreateOneIfDoesntExsist(userProfileManager,ordersManager, checkoutState); // Save the customer address CustomerAddressHelper.SaveCustomerAddressOfCurrentUser(checkoutState, customer); //Use the API to checkout IPaymentResponse paymentResponse = ordersManager.Checkout(cartOrderId, checkoutState, customer); // record the "success" state of the checkout checkoutState.IsPaymentSuccessful = paymentResponse.IsSuccess; Order order = ordersManager.GetOrder(cartOrderId); //Increment the order IncrementOrderNumber(ordersManager, order); // add the order to customer customer.Orders.Add(order); // Update the order order.Customer = customer; ordersManager.SaveChanges(); if (!paymentResponse.IsSuccess) { return new Tuple<bool, IPaymentResponse>(false, paymentResponse); } if (order.OrderStatus == OrderStatus.Paid) { UserProfileHelper.AssignCustomerToRoles(userManager, roleManager, catalogManager, SecurityManager.GetCurrentUserId(), order); EmailHelper.SendOrderPlacedEmailToClientAndMerchant(cartOrder, checkoutState, order.OrderNumber); } return new Tuple<bool, IPaymentResponse>(true, paymentResponse); }
internal static IPaymentResponse PlaceOrder(OrdersManager ordersManager, CatalogManager catalogManager, UserManager userManager, RoleManager roleManager, UserProfileManager userProfileManager, CheckoutState checkoutState, Guid cartOrderId) { CartOrder cartOrder = ordersManager.GetCartOrder(cartOrderId); cartOrder.Addresses.Clear(); cartOrder.Payments.Clear(); //set the default currency of the order string defaultCurrency = Config.Get <EcommerceConfig>().DefaultCurrency; cartOrder.Currency = defaultCurrency; // set the shipping address CartAddress shippingAddress = CartHelper.GetShippingAddressFromCheckoutState(ordersManager, checkoutState); cartOrder.Addresses.Add(shippingAddress); // set the billing address CartAddress billingAddress = CartHelper.GetBillingAddressFromCheckoutState(ordersManager, checkoutState); cartOrder.Addresses.Add(billingAddress); //Get the first payment method in the shop // set the payment CartPayment payment = CartHelper.GetCartPaymentFromCheckoutState(ordersManager, checkoutState); cartOrder.Payments.Add(payment); ordersManager.SaveChanges(); // Get current customer or create new one Customer customer = UserProfileHelper.GetCustomerInfoOrCreateOneIfDoesntExsist(userProfileManager, ordersManager, checkoutState); // Save the customer address CustomerAddressHelper.SaveCustomerAddressOfCurrentUser(checkoutState, customer); //Use the API to checkout IPaymentResponse paymentResponse = ordersManager.Checkout(cartOrderId, checkoutState, customer); // record the "success" state of the checkout checkoutState.IsPaymentSuccessful = paymentResponse.IsSuccess; Order order = ordersManager.GetOrder(cartOrderId); //Increment the order IncrementOrderNumber(ordersManager, order); // add the order to customer customer.Orders.Add(order); // Update the order order.Customer = customer; ordersManager.SaveChanges(); if (order.OrderStatus == OrderStatus.Paid) { UserProfileHelper.AssignCustomerToRoles(userManager, roleManager, catalogManager, SecurityManager.GetCurrentUserId(), order); EmailHelper.SendOrderPlacedEmailToClientAndMerchant(cartOrder, checkoutState, order.OrderNumber); } return(paymentResponse); }