Upgrade Your Drupal Skills
We trained 1,000+ Drupal Developers over the last decade.
See Advanced Courses NAH, I know EnoughMultiple Ecommerce Shopping Carts in Drupal Commerce
Many people researching Drupal Commerce 2.x for Drupal 8 (or the upgraded Drupal 9) likely want to either remove the extra ecommerce shopping carts or allow checkout for multiple carts. This blog post will explain why we have multiple carts — and why being able to checkout with multiple carts is challenging but possible.
Why you can have more than one Drupal Commerce cart
First, let's demonstrate what Commerce 2.x can do out of the box for a single user and is often considered a bug.
- Go to Acro Media's demo store.
- Start as anonymous and register as a user.
- Register here.
- Check your email/spam and click a link.
- Set your password because you'll need to log back in shortly.
Note: Acro Media doesn't use your email address used on the account sign up on this site to contact you for marketing purposes. You can opt into marketing materials by clicking the large red help question mark on the right.
- Once registered, add something to your cart, and log out.
- Add something to your cart and log in.
- Go to /cart.
If you are seeing two carts, then you have discovered, like many others, that Drupal Commerce 2.x shows multiple carts by design. Drupal Commerce 1.x created multiple carts like this as well, but would only show one cart at a time. In 1.x, you could follow the five steps outlined above, then checkout and your original cart would display.
Why? Because the system will not delete carts. We're using a simple anonymous session to create two carts in a potentially common edge case.
The pros and cons of multiple carts
Pro |
Con |
|
|
Turning off multiple carts in Drupal Commerce 2.x
There are two relatively simple Drupal modules you can use to show a single cart to a user:
Commerce Combine Carts — If this module is turned on, the multi-cart demo above will not produce two carts.
Commerce Cart Advanced — This module packs a lot of features into it for the crowd of users who want management tools around their multiple cart experience, but it also includes the option to display only one cart at a time. It was created and is maintained by Acro Media's senior developer known as krystalcode (Dimitris Bozelos).
Checking out multiple carts, Etsy/Amazon-style
The holy grail of marketplace commerce is multi-store and single-checkout. The idea is that you could have a site that features multiple stores, and customers could check out once from more than one store.
According to the original author and former maintainer of Drupal Commerce 2.x, bojanz, you can do this by coding a form that acts like a checkout flow-form but simultaneously changes more than one order.
However, you also have to consider several other issues:
- Fulfillment — If the stores are selling physical products, how will these orders appear to each store's customer and customer service? Likely, each store would want to only see the products they are responsible for.
- Order management — Even Amazon does some weird things with orders for its customers. Often, orders are split up for seemingly no reason, changing order totals and making order management challenging for customers and customer service.
- Payment — If you, as the site owner, plan to pay stores from your bank account, you'll want to set up a single, site-wide payment gateway and manage disbursement payments to your store owners. If not, then you'll require each store to have its payment gateway credentials or some other even more complex setup.
- Taxes — Assuming you have reasonable solutions for all of the above, taxes will still likely make it very hard to move forward. Tax law is complex in the best of times, and depending on how you take payment, tax rules would need to be created and maintained per store. Solutions like Avalara AvaTax only work per store and can be overly expensive for small retailers.
The bottom line
You have a few contrib options to manage carts for your customers. But if you want that elusive multi-vendor, single checkout, you'll have to plan well according to your business needs. Regardless, the flexibility of Drupal Commerce's ecommerce cart functionality can create the best ecommerce shopping carts out there; you just need to know how to do it.
About Drupal Sun
Drupal Sun is an Evolving Web project. It allows you to:
- Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
- Facet based on tags, author, or feed
- Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
- View the entire article text inline, or in the context of the site where it was created
See the blog post at Evolving Web