Hello folks,
Before I get into the details of that list of changes/ideas are like to share my background. I started using OS commerce in 2001 up to 2004. During those years I ran a photography site selling photography equipment in the United States and in England. I never wrote any major modules for oscommerce but I did do a lot of tinkering in the code and reading the forums for many many hours. I also went on to contract a third-party in Germany to build several modules for my oscommerce store, I never did put them up on oscommerce due to the amount of money that I paid. Saying all that, this list is basically built off of my experience while working with oscommerce and running my own commerce site. Please excuse me if some of these things have already been covered cover or are being worked on at the moment.
-
Sessions: regardless of what happens to the user, if they fall off the site or they go to PayPal and decide to cancel that payment option and then come back to the site or if they hit the back button on their browser while in the checkout process, the products need to remain in the cart - until they finish checkout. There are many forum post on oscommerce just on this subject alone, about sessions being dropped or the cart being empty due to the user being moved off the site from a nonsecure to a secure environment or vice versa.
-
Let's update the Shippingcalc module to where anonymous users can calculate shipping costs. You would need a few forms like state zip code country etc. to be added to the shipping options page, what forms depend on the shipping api. Like UPS only needs a zip code and Fedex needs several things, if my memory serves me correct.
-
If you're using multiple carriers why not allow the name of the carrier to be above the shipping option? If I'm going with FedEx and UPS I want to see FedEx first and then three services directly underneath the FedEx title, and then in another box below that, or another form field, show UPS title, below that show UPS services. This just in can be taken care of with checkout templates - see my notes below.
-
One of the modules I had built an OS commerce was a one-page check out. Some people may frown upon this for good reasons but if you have users coming in and buying goods often, a one-page check out is going to be the simplest thing for them. Of course, you could always give the user an option. Ajax would be an option to combine forms and have them displayed on a one-page checkout, but to be honest I have not dealt with very much Ajax at all and am not sure if this can even be done. But if so, you would combine forms on a single page and as one part of the form is filled in, ie, logging in, the shipping address options and rates can be given - this is assuming the user already has an account and an address in the address book.
-
If choosing to have multiple pages for the entire checkout system it would be great to have a back button. I'm sure that this is been discussed and I haven't read about it yet, so maybe there's a good reason why a back button is not offered, maybe due to losing a session or the cart being emptied for some reason. Being an e-commerce store owner one of the things that I noticed about my users and how they browse, they hit the back button a lot. I discovered this by installing a script to monitor each page the user went to - I would watch them do check out in real time. Many many times, for whatever reason, the user hits the back button or wants to go back to the previous page. I haven't read up on statistics lately about how web savvy online shoppers are but my guess is that many of them are not web savvy and they would not understand why when they do hit the back button in the browser, why they lose the items in the cart. Maybe this is a problem for certain browsers, if so it should be resolved. An alternative would be to have a block on one of the columns that would allow them to go back to any of the stages of the checkout system. This might be a simple fix and possibly more organized/friendly for the user.
-
I'm sure there is a simple way around this next problem, there should be an option for for the admin to set up a secure enviroment for logged in users, on the backend - maybe within eCommerce settings. Right now a secure environment only kicks in when the user is on the payment page. If the user wants to login to view an invoice or transaction, they are going to want that session to be a secure. As of right now you could probably make the change in settings or on the page template file to where if user greater than one then session always remain secure. But in all honesty there should be something within the e-commerce settings too low to make this happen.
-
While doing checkout test I discovered that the e-mails being sent are not being checked for HTML special characters. Specifically, all my tests with a USPS shipping option, the shipping service shown in the e-mail had special characters wrapped around the shipping service text.
-
It would be nice to see some additional functionality and features with the e-commerce module and contribs. Many of these are blocks, which technically could be a snippet. Here is a quick list: popular products (popular content module), bestsellers, recently viewed items (for anonymous and loading users), wish list (for logged in users) which can be easily shared with anonymous users, new products, cross sell platform (family nodes module), people who bought this also bought (like Amazon), e-commerce newsletter, price alert (alert shopper when price drops). Many of these suggestions can be done for advanced drupal users but for every day e-commerce users it would not be simple. Maybe if we create some snippets and post them on drupal with instructions on how to add them to your drupal site that might suffice instead of coding and adding it to drupal commerce.
-
eComerrce for Drupal has come a long way within the last year and a half, congrats and a pat on the back to all those who made this happen. There are still many things that need to be done. In my opinion, one of those things is allowing templates for each part of the checkout page. You can do a lot of things in CSS and possibly hacking the module files but as we all know drupal developers prefer us not to hack module files. Doing theme callbacks are optional but many of the modules that have output are not set up to run callbacks within the template.php file. Why is this important? The checkout pages should be just as clean and design well as the rest of the site. And as ecommerce store owners we get pretty picky about how things look and work once we begin to understand why customers are not completing the checkout. Just as a brick-and-mortar store the owner will change things around the entrance or paint the walls a different color or tidy up the outside by adding flowers etc. just to make the whole experience good. It's the same thing for online shoppers. In all honesty, if I see a website that is not design well, I won't even bother creating an account. If I get into an online store and it created an account and I began going through the checkout and funny things start happening in the checkout I'm not even going to waste my time messing around.
I have been frank and honest with my suggestions above. Please understand that I'm not knocking the e-commerce module or any of its components, I'm only suggesting these things due to already working with e-commerce in the past. I would be more than happy to contribute and make some of these changes possible, just let me know how I can help. I will say that I am not a hard-core programmer, but I am beginning to learn drupal and it's APIs. I follow the forums quite a bit and I read quite a bit of drupal code so I'm a little bit familiar with coding standards and API functions. Again, please let me know how I can help. Many thanks for all of the contributors who have made commerce work with drupal.

Comments
Thanks for the comments, and
Thanks for the comments, and we have plans to correct these issues.
Soon I am going to be re-writing the payments system to include a receipting and customer interfaces which will allow for people to make the payments for the transaction without needing to create the transaction as is required now.
Also the cart is going to be re-developed so that it will effectively be a single page checkout. That is things like the collection of addresses, if there is 1 or more addresses then the checkout will default to the primary address and not ask the customer to choose on. They will then be given the option to change the address or add a new one.like wise with the payments, if will default to the site owners preferred payment method and they will be able to change it. So if they have made a purchase before then they will just go to the review page without any stops.
i am currently re developing the products, and adding a CCK like interface for product types. So we can creating functions like product availability across all products without having to recreate or hack in the functionality from other modules. Also with some other changes we will be looking at removing the product node type and allowing stores to create the required product nodes in the form that they want.
Once I have product features included in products, I will be looking for an product availability module created which will handle products with limited availability like tangible products and training courses. This will also need to handle temporary allocation so that once the customer has put the product into the cart, it will be allocated and will allow people to checkout without fear of over allocation.
We are working on things to make E-Commerce better, and now with the tools such as the new release system, we are starting to create a better and better system.
--
Gordon Heydon