Programatically add product to cart
Hi,
I was wondering if anyone had any example code for programatically adding a product to a visitors shopping cart.
Here's the scenario. I have a complicated registration form which pulls data from another system. I would like at the end of the process to add a product (event registration) to their shopping cart and then direct them to the payment processing.
I'm a beginning programmer, but I have created another form that imports events from the other system into Sitefinity. (see http://www.sitefinity.com/devnet/forums/sitefinity-4-x/general-discussions/import-events-from-different-database.aspx
) I was hoping there was something similar I can do for adding the product.
Thanks!
Bumping this up, hoping someone might have a response...
I started a similar thread around the same time as you and I'm waiting for an anwser as well. Seems like this should be easy to do but the lact of response from Telerik has me a bit concerned. My thread is located here: Using ecommerce for donations and adding items to cart programatically
--Steve
I've found that there is an add to cart method for the orders manager, but I can't figure out how to get the cart order to input it.
Here is what I have so far:
CatalogManager catalog = new CatalogManager(); Product product = catalog.GetProduct("AEATT12/A3ME"); OrdersManager orderm = new OrdersManager(); CartOrder cartItem = orderm.CreateCartOrder(); orderm.AddToCart(cartItem, product, 1); orderm.SaveChanges();
Correction: It was a currency value that was needed. I modified the code and got this to work (almost).
CatalogManager catalog = new CatalogManager();Product product = catalog.GetProduct("AEATT12/A3ME");OrdersManager orderm = new OrdersManager();CartOrder cartItem = orderm.CreateCartOrder();cartItem.Currency = "USD";orderm.AddToCart(cartItem, product, 1);orderm.SaveChanges();Hi Amanda Shafer,
You can use the snippet below -
public void AddToCart() var ordersManager = OrdersManager.GetManager(); var catManager = CatalogManager.GetManager(); Guid productId = Guid.NewGuid(); //Get the Guid of the product you want to add to cart var product = catManager.GetProduct(productId); int quantity = 1 //Set the quantity that is supposed to be added to the cart; try CartOrder shoppingCart = GetShoppingCartForUser(ordersManager); CartDetail cartDetail = shoppingCart.Details.Where(d => d.ProductId == product.Id).SingleOrDefault(); if (cartDetail != null) ordersManager.IncreaseQuantity(cartDetail.Id, quantity); else shoppingCart.Currency = Config.Get<EcommerceConfig>().DefaultCurrency; ordersManager.AddToCart(shoppingCart, product, quantity); ordersManager.SaveChanges(); catch (Exception ex) throw new InvalidOperationException(Res.Get<OrdersResources>("NotAddedToCart")); public Guid GetShoopingCartId() HttpCookie shoppingCartCookie = HttpContext.Current.Request.Cookies[EcommerceConstants.OrdersConstants.ShoppingCartIdCookieName]; if (shoppingCartCookie == null || string.IsNullOrWhiteSpace(shoppingCartCookie.Value)) return Guid.Empty; if (!shoppingCartCookie.Value.IsGuid()) throw new InvalidOperationException("cartOrderId string cannot be parsed as a GUID; please provide a valid cartOrderId value."); return new Guid(shoppingCartCookie.Value);public CartOrder GetShoppingCartForUser(OrdersManager ordersManager) Guid shoppingCartId = GetShoopingCartId(); CartOrder shoppingCart = ordersManager.TryGetCartOrder(shoppingCartId); if (shoppingCart == null) shoppingCartId = Guid.NewGuid(); shoppingCart = ordersManager.CreateCartOrder(shoppingCartId, null); return shoppingCart;Hi Venkata,
I tried using the code you provided. However, it appears as if it does not set the cookie at all. So when the user navigates to the car, nothing appears in there.
Through trial and error, I came up with this code. Don't know if it's the best way to go about it, but it does what I want.
CatalogManager catalog = new CatalogManager();Product product = catalog.GetProduct("AEATT12/A3ME");HttpCookie cookie = Request.Cookies.Get("shoppingCartId");OrdersManager orderm = new OrdersManager();// Check if shopping cart cookie exists in the current request.if (cookie == null) //if it does not exist... CartOrder cartItem = orderm.CreateCartOrder(); //create a new cart order var shoppingcartid = cartItem.Id; // that id is equal to the cookie value HttpCookie Cookie = new HttpCookie("shoppingCartId"); //create a new shopping cart cookie DateTime now = DateTime.Now; // Set the cookie value. Cookie.Value = shoppingcartid.ToString(); // Set the cookie expiration date. Cookie.Expires = now.AddYears(1);// Add the cookie. Response.Cookies.Add(Cookie); //give cart item currency of USD because it cannot be null cartItem.Currency = "USD"; //add the product to the cart orderm.AddToCart(cartItem, product, 1); //save all changes orderm.SaveChanges();else //if the cookie does exist Guid guid = new Guid(cookie.Value.ToString()); //get the cookie value as the guid CartOrder cartItem = orderm.GetCartOrder(guid); //get the cart based on the cookie value orderm.AddToCart(cartItem, product, 1); // add the item to the cart orderm.SaveChanges(); //save changesHello Amanda Shafer,
Yes, your sample should work, I can also give you utility methods to remove and set the cookie in case you need it.
Below are the snippets -
public void SetShoppingCartId(Guid shoppingCartId) const string shoppingCartCookieName = EcommerceConstants.OrdersConstants.ShoppingCartIdCookieName; HttpContext.Current.Response.Cookies[shoppingCartCookieName].Value = shoppingCartId.ToString(); HttpContext.Current.Response.Cookies[shoppingCartCookieName].Expires = DateTime.Now.AddMonths(6);public void RemoveShoppingCartCookie(this IOrdersControl ordersControl) HttpCookie shoppingCartCookie = new HttpCookie(EcommerceConstants.OrdersConstants.ShoppingCartIdCookieName,""); shoppingCartCookie.Expires = DateTime.Now.AddDays(-1); HttpContext.Current.Response.Cookies.Add(shoppingCartCookie);Hi,
I'm having the same issue. I can see the cart order in "sf_ec_cart_order" and "sf_ec_cart_detail" tables. However I can't see the order in my shopping cart. I tried everything in this thread, but no success. Can anyone provide me little help please.
Thank you,
Nuwan, did you ever manage to get this working?