Shopping carts, like any e-commerce application, are a software model of a real-life business situation. Ideally, of course, your specific business should be no more complex than absolutely necessary, so your shopping cart should be equally simple. That only holds, however, if every e-business writes their own custom application.
The moment a shopping cart tries to be all things to all businesses, the complexity escalates on a geometric scale. The more ambitious the cart tries to be, the more complicated becomes the database and the code. You get more power and flexibility, but not without a cost. It becomes much more difficult to configure, and much more expensive to maintain. And heaven help you should you ever want it do something outside its design parameters.
My advice has always been to sit down for an hour or two, and write down every single detail of a fictional, all-encompassing transaction in your particular business. What data is necessary to complete a transaction, where the does the data come from, where does the data go. You are charting the data flow, an absolute prerequisite to determining your needs.
I like to do this on big 4x6 index cards, numbering each card as I create it. Take a card, for example, and write a one- or two-line sentence about your inventory, then number the card 10. Does the inventory come from a database? Is it static or dynamic? Could it be both?
Take another card and write down a description of your "display" mechanism. Do you want static HTML pages or dynamic CGI pages? Label this card number 20. You want to leave gaps in your numbering system, so that later you can insert new cards if needed.
Will you display one product per page? Or multiple? Can the shopper select more than one item? Every time the shopper does something (or can do something), you need to insert at least one new card, possibly several. If the shopper has two choices, you need two cards. If he has three choices, you need three cards. Your numbering scheme should allow all of your cards to be laid out in a giant pyramid, though it need not (and probably won't) be balanced. Some data flow lines will end up being much longer and more complex than others.
At the end of a few hours, you should know EVERYTHING you want a shopping cart system to do for you. It's fine to look into the future, what do you want it to do six months from now, but realize that every such prognostication will carry a cost in complexity. Don't let your data flow become a wish list, else it will no longer be a true reflection of your business model.
Now, just go find the simplest available shopping cart that does everything you need, avoiding the bells and whistles you don't need.
p.s. No, it won't be quite that easy. As you read about shopping carts, as you install and test shopping carts, you are going to find a few holes in the data flow you so laboriously created. Things you plumb forgot. But that's okay, because you left gaps in your numbering and those new steps can still be added. Do so, then keep looking.
p.p.s. SAVE THOSE DATA FLOW CARDS! You'll find a few hundred other uses for them as you build your on-line business.
|