internal static CartAddress GetBillingAddressFromCheckoutState(OrdersManager ordersManager, CheckoutState checkoutState)
        {
            CartAddress billingAddress = ordersManager.CreateCartAddress();

            billingAddress.FirstName   = checkoutState.BillingFirstName;
            billingAddress.LastName    = checkoutState.BillingLastName;
            billingAddress.Email       = checkoutState.BillingEmail;
            billingAddress.Address     = checkoutState.BillingAddress1;
            billingAddress.Address2    = checkoutState.BillingAddress2;
            billingAddress.AddressType = AddressType.Billing;
            billingAddress.City        = checkoutState.BillingCity;
            billingAddress.PostalCode  = checkoutState.BillingZip;
            billingAddress.StateRegion = checkoutState.BillingState;
            billingAddress.Country     = checkoutState.BillingCountry;
            billingAddress.Phone       = checkoutState.BillingPhoneNumber;
            billingAddress.Email       = checkoutState.BillingEmail;
            billingAddress.Company     = checkoutState.BillingCompany;

            return(billingAddress);
        }
示例#2
0
        private static void UpdateCartDetails(CheckoutState checkoutState, OrdersManager ordersManager, Customer customer, CartOrder cartOrder)
        {
            CartAddress shippingAddress = null;

            if (checkoutState.OrderRequiresShipping)
            {
                shippingAddress             = ordersManager.CreateCartAddress();
                shippingAddress.FirstName   = checkoutState.ShippingFirstName;
                shippingAddress.LastName    = checkoutState.ShippingLastName;
                shippingAddress.Address     = checkoutState.ShippingAddress1;
                shippingAddress.Address2    = checkoutState.ShippingAddress2;
                shippingAddress.AddressType = AddressType.Shipping;
                shippingAddress.City        = checkoutState.ShippingCity;
                shippingAddress.PostalCode  = checkoutState.ShippingZip;
                shippingAddress.StateRegion = checkoutState.ShippingState;
                shippingAddress.Country     = checkoutState.ShippingCountry;
                shippingAddress.Phone       = checkoutState.ShippingPhoneNumber;
                shippingAddress.Email       = checkoutState.ShippingEmail;
                shippingAddress.Company     = checkoutState.ShippingCompany;
                shippingAddress.County      = checkoutState.ShippingCounty;
                cartOrder.Addresses.Add(shippingAddress);
            }

            var billingAddress = ordersManager.CreateCartAddress();

            billingAddress.FirstName   = checkoutState.BillingFirstName;
            billingAddress.LastName    = checkoutState.BillingLastName;
            billingAddress.Address     = checkoutState.BillingAddress1;
            billingAddress.Address2    = checkoutState.BillingAddress2;
            billingAddress.AddressType = AddressType.Billing;
            billingAddress.City        = checkoutState.BillingCity;
            billingAddress.PostalCode  = checkoutState.BillingZip;
            billingAddress.StateRegion = checkoutState.BillingState;
            billingAddress.Country     = checkoutState.BillingCountry;
            billingAddress.Phone       = checkoutState.BillingPhoneNumber;
            billingAddress.Email       = checkoutState.BillingEmail;
            billingAddress.Company     = checkoutState.BillingCompany;
            billingAddress.County      = checkoutState.BillingCounty;

            cartOrder.Addresses.Add(billingAddress);

            decimal vatTaxAmount = cartOrder.VatTaxAmount.HasValue ? cartOrder.VatTaxAmount.Value : 0;

            checkoutState.SubTotal        = cartOrder.SubTotalDisplay + vatTaxAmount;
            checkoutState.TotalWeight     = cartOrder.Weight;
            checkoutState.Tax             = cartOrder.Tax;
            checkoutState.ShippingAmount  = cartOrder.ShippingTotal;
            checkoutState.ShippingTax     = cartOrder.ShippingTax;
            checkoutState.ShippingTaxRate = cartOrder.ShippingTaxRate;
            checkoutState.DiscountAmount  = cartOrder.DiscountTotal;
            checkoutState.Total           = cartOrder.Total;

            var paymentmethod = ordersManager.GetPaymentMethods().FirstOrDefault();

            checkoutState.PaymentMethodId   = paymentmethod.Id;
            checkoutState.PaymentMethodType = paymentmethod.PaymentMethodType;

            CartPayment cartPayment = ordersManager.CreateCartPayment();

            cartPayment.PaymentMethodId        = paymentmethod.Id;
            cartPayment.PaymentMethodType      = paymentmethod.PaymentMethodType;
            cartPayment.CreditCardCustomerName = customer.CustomerFirstName;
            cartPayment.CreditCardNumber       = MockCreditCardNumber;

            cartOrder.Payments.Add(cartPayment);
        }
示例#3
0
        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);
        }