There are many components to choose from on the Joomla Extensions Directory as an E-commerce solution, but the most popular and polished ones are Hikashop and Virtuemart. Between the two, my preference is definitely Hikashop. This isn't an absolute preference, however; I believe that in some cases Virtuemart is an ideal solution, but only if there are a limited number of products you plan to sell, and there aren't many variants/options that these products carry. So, on to the components! I'm going to go over different features of each product as well as their pros and cons.
Hikashop Joomla Component Overview
Cost:
Hikashop has several options available for purchase; Starter (Free), Essential (€ 49,95), and Business (€ 99,90). You can also add on features for multi-vendor and front end administration for an additional cost. If you're new to Hikashop and want to give it a try, I suggest going with the Starter and upgrading as the need arises (the upgrade process is simple). Personally, I use the Business edition every time, but you could probably get by with the Essential if your shop isn't too complex. There are some 3rd party addons that are available for purchase, but I've never had the need to purchase any. Hikashop has tons of features built-in, which is one of the reasons I recommend it's use.
Shop administration and configuration:
Speaking of configuration, this is an area where Hikashop really shines! Starting off with it can be a bit overwhelming because there are so many options, but once you get a hang of it, administration becomes easier. Hikashop makes great use of Joomla's MVC structure, with the ability to edit views of the component in their administration panel (you can also delete your changes, in addition to the fact that any upgrades won't scrap your customization). There are also many useful features such as ratings and reviews, catalog mode, single page checkout (with a drag and drop workflow to easily re-organize the steps), and the ability to display products in a wide variety of formats.
Products can be displayed as a list or in a grid, and can be sorted in numerous ways, including: by popularity, ratings, creation date, price, and more (there are around 40 different options). This sorting also extends to their filter options, which allows customers to narrow their selection by those criteria. One complaint I have about product listings is that Hikashop's method is a little ridgid, and can be difficult to work with sometimes, often requiring a less-than-idea workaround as a solution. For example, assigning a menu item to categories will also force a list of products. If you just want to display categories? Create a module that displays the categories on a page that has a menu item assigned to something else (such as an article).
Another gripe I have with Hikashop's functionality how it handles module assignment to product detail and product listing pages. Assigning modules to a Hikashop menu item will apply it to every page within hikashop (assigning to a category page will recursively assign the module to all the product pages). Since you likely won't be creating a menu item for every product you have, the best solution I've found to this is using Advanced Module Manager to limit where the module is assigned.
Adding/editing product details is very easy to manage in Hikashop, since most of the options are all on one edit page. Options to configure include multiple category assignment, options & variants, related items, price (retail & sale), weight/volume, description, images, and more. These all work quite well, and since most of it can be done on one page, it doesn't take up too much time when you're adding a large number of products. These features are pretty standard in e-commerce products, but the ease of use and capabilities of Hikashop really stand out. One of my favorite features is how product variants are handled. It's a little tricky to get used to the first time you set it up, but here's a quick explanation of how it works:
Let's say you have a shirt that you are selling, with different colors and sizes. You would add two sets of characteristics to your product (size and color), with variants under each one, such as "small", "medium", and "large" for sizes, and "red", "blue", and "green" for colors. Once you have those setup, there's a separate page for editing each of these variants. This page looks exactly like the product edit screen, and lets you manage every features as you would a product - this includes separate images, weights/volume, price, etc. The finished result is a set of changing characteristics of your one product as a customer selects a different variant. This isn't really meant to be a tutorial ( you can find plenty of these online), but more of an assurance that Hikashop's features for complex product varieties works pretty well. Of course, there are always going to be some more unique use cases where Hikashop may not meet your requirements in this area, but this configuration matches the needs of your typical e-commerce store.
Order Administration:
Hikashop has some minimal features when it comes to reviewing and exporting orders. It also has a neat report section that shows a graph indicating your sales, sortable by time period. You can view your orders, which displays essential information, and you can export that information as a CSV. Aside from that, there's not much to write home about. It does it's job, but certainly isn't going to "wow" anyone.
Design & display formatting:
Hikashop isn't very pretty. At least out of the box it isn't, and if you don't know some HTML, CSS, and preferably some javascript/jQuery, you may be stuck with a bland look on your e-commerce site.
There are a few areas of note, however. They do a good job of generating thumbnails in product/category listings, as well as the image presentation and switching of alternate images on product detail pages. Also, Hikashop somewhat recently added a cool feature that allows you to switch views of your product detail page to reorganize the layout or putting blocks of content like comments, reviews, and description in a tabbed layout (I recommend trying this out- it works pretty well).
Hikashop also has an option to turn on responsive mode to adapt to different screen resolutions. Unfortunately, this doesn't work very well and requires some tweaking if you want it to work well (checkout is one of the areas that needs the most attention - the layout is still formatted in tables, so it looks terrible on mobile, albeit still functional). Their shopping cart is also very static. You can either configure it to display the number of items OR the full product information, which can end up taking quite a bit of space as you add items to your cart. I typically setup the module to display all the information that is hidden until you hover over a cart icon, but this requires some javascript knowledge.
Payment gateways:
There's a huge selection of payment gateways available for use with Hikashop. No complaints here - for a full list of them, you can check out their documentation page.
Support:
Hikashop has really shown a commitment to their product. They are extremely active on their forums, and whenever I am curious about how to do some additional customization, I usually can find an anwer there. And they listen to their customers! I consistently see features added based on requests on their forums that are now implemented.
Virtuemart Joomla Component Overview
Cost:
Virtuemart is a free product, which is community built and supported. One major caveat to that model is that to extend Virtuemart beyond it's standard capabilities, you will likely end up buying 3rd party extensions to customize your shop to meet your requirements. From my experience with Virtuemart, I actually ended up paying about the same amount (if not more) as I did on purchasing Hikashop. Since it is a free product, I've noticed some template creators including Virtuemart in their templates pre-configured. While this can save some time, in the long run you may be better off going with a different template our replacing Virtuemart with something else if you have a complex product selection.
Shop administration and configuration:
Virtuemart recently went through a major upgrade (version 2), but they are definitely going through some growing pains. There are many bugs that appeared after that release, so it is a good idea to always stay up to date with Virtuemart.
Let's start off with Product & Category management. Setting up simple products and categories is easy in Virtuemart, and I find their initial navigation a little easier to follow than Hikashop's. Product entry has similar features to Hikashop, but rather than laying out the options on one page, they split them across 6 different tabs. Most of the features work pretty well, including setting a product title, description, uploading images, handling inventory, and assigning products to categories.
My biggest complaint with Virtuemart is how it handles product variants (which are called "custom fields" in Virtuemart). Using the same example as I used with Hikashop, this would be the equivalent of characteristics of your product (such as having shirt sizes available in small, medium, large, or different colors). The whole process is lengthy, and difficult to figure out the first time around. To setup your custom fields, you need to create a custom field per option - if you are creating many different options per product, this could mean lots of setup time. There are many options to choose from, without much documentation around (outside of tutorials available online) to figure out what each of these settings do. Once you get used to setting up the custom fields, it isn't too difficult to manage (although you will likely still need to look up tutorials for reference), but be prepared to spend some extra time to get a handle on the configuration nuances. After creating your fields, you then add them to each product which will appear as a selection option on your product. The issue with module assignment that I had with Hikashop (assigning to a category page will recusively assign the module to all the product pages) is also present with Virtuemart, so I guess no one's found a suitable work-around in either case. Again, Advanced Module Manager was a good fix. One quirky feature with Virtuemart and displaying a module of products is that you can only setup modules to display a category. So, if you want to choose related products to show on your product detail page, and these related products are in the same category, you have a pretty good chance of displaying the same product in your related products module.
Overall shop configuration has plenty of options, most of which work as advertised, but I couldn't get over all the bugs that came up on implementations. I spent a good deal of time browsing through forums looking for solutions to my problems. I constantly came across various fixes that were obviously bandaids rather than solutions.
Order Administration:
Out of the box, Virtuemart's order administration is very bare-bones. You can view order information, and generate an invoice, but not much else (this is limited to one invoice per product, you can't generate multiple). Thankfully, ccVAOM does an excellent job of exporting orders, and has some great template features to make them look nice. This is a paid product, but it definitely proved to be useful (and more robust than Hikashop's).
Design & display formatting:
Virtuemart's community support helps out with their display quite a bit. There's plenty of templates to choose from, but since these are all 3rd party created, quality is across the board. It certainly helps out as a starting point though, which is why Virtuemart can be ideal for a quick project that doesn't have too many products and/or variants. One thing of note is that alternate image switching previews don't exist on product detail pages, unless your template overrides that.
Payment gateways:
Payment gateways for Virtuemart are mostly provided by 3rd parties, which leaves a rather limited selection. Most of the options are paid, so keep in mind that this is going to be an additional cost. Since these these are an add-on to Virtuemart, they may not cooperate well with other extensions that are implemented in the checkout process (this happened to me while using an extension that added more fields in checkout - the plugin I was using would clear the additional data being saved). Also, this hinders your ability to customize the checkout flow, possibly creating additional steps.
Support:
Support for Virtuemart is usually provided on their forum, or on the forum of 3rd party extensions that you are using. The users can be pretty helpful, but most of the responses are different "hacks" that people have put together to meet their requirements. If you don't know PHP, you're definitely at the mercy of other's help, which can be really bad if you have a deadline. I definitely recommend Hikashop for their support over Virtuemart's forums.
Conclusion
Both of these components have their strengths and weaknesses, some of which are more of a matter of user preference. They both are capable of producing similar results for your e-commerce website, but when it comes down to efficiency, Hikashop is the winner. There are some die-hard Virtuemart fans out there that would say otherwise, but I've worked with both of them and have found Hikashop to have a much smoother and enjoyable process.