Two free solutions
I needed to select a shopping cart application for an associate. This blog post provided a nice view of the PHP shopping cart landscape. My limitation was using PHP 4 and MySQL 4 and I wanted something simple that looked good with out the need to splash a lot of paint on by way of css or template files.
StoreSprite turned out to be the tool of choice that fit all the above criteria. It was full featured, with a reasonably simple UI for shop admin first timers to get their heads around. I did experience some issues getting the Paypal sandbox to work for testing, and it lacked support for different shipping rates to different state/territories (different shipping rates for different countries is supported though). However we were able to work around those issues to be able to deploy a site using it and having a happy business owner who went from updating a static html page with Paypal buy now buttons to a dynamic site where they dont have to see any html again.
To address the above limitations, I would use a more mature product like Magento. It did support the shipping types we were after and its pluggable architecture and open source code meant it much easier to support with a strong community and plugin base. However, it does need PHP 5 (although a workaround to include PHP 5 binary files to get it to work on PHP 4 servers is mentioned on their wiki). Also, while the UI is more polished, it would be more difficult for the beginner to get to terms with. I found, that the more full featured a shopping cart app gets, the further the admin UI is separate from the user UI, both in terms of the domain used, and the mental picture of how things are connected. For example, StoreSprites menu’s are clear cut – Settings, Products, Content but Magento’s seemed to have a few different areas for the same thing – where are the shipping settings, are they are plugin setting in the Store menu, or in the Products menu.
The other alternatives I looked at were OSCommerce and ZenCart that come bundled as ‘One Click Installs’ with many a hosting provider offer. However the default theme was stale – very crowded and lots of options to setup the different sections of the site. It made things more time consuming than they had to be.