By Bob Kruse on February 27, 2013 in Learning Curve
I'm building a web app in Drupal that let's people purchase one item only and I want the simplest checkout possible. Since most users will be new then interrupting the checkout process with a Login box and link to Register seems unecessary. What I really want (or what I thought I wanted) is to have a registration form as a step in the checkout. So my dream 1-step checkout page would consist of: Register, Promo Code, Payment Info... Done. Well it's easier said than done.
So here are my current Drupal Commerce checkout options:
1. Default Drupal Commerce
By default Drupal Commerce gives you an Account Information Checkout Pane on the Checkout Page. If you're logged in, then it displays your username and email, otherwise it displays a plain-Jane Email address field. When an Anonymous customer checks out, then a Rule fires, creating the new account, and associating the order with the new account. What I thought was cool is if the user who isn't logged in checks out using the email address that they used before, then a separate Rule fires finding the existing user and automatically assigning the order to them. Now it doesn't log in the new user automatically like it did in Ubercart, so you need to add in a custom rule explained here (Drupal Commerce login after checkout).
2. Checkout Login module (link)
This module seems promising because it uses that same plain-Jane email field and does an auto lookup for an existing user with the same email address. If it finds one then it shows (via some ajax magic) a password field and login button. This is a pretty awesome solution and keeps the checkout process pretty simple and clean.
3. Commerce Extra Login module (link)
This module adds an extra checkout page called Login which occurs before the checkout page, similar to the Checkout Redirect mentioned next. However, this module exposes the login form as a checkout pane which you can move over to the checkout page, but for this to work you need to install Commerce Checkout Pages inorder to hide the Login page that this module creates. Note: as of 3/4/13, this module does not actually log someone in yet stating, "No login was attempted; this feature still needs development.".
This would be great If I expected a lot of return users, but when launching a new app a registration form would be most important - I don't want to interrupt a potential customer with an irrelevant login form.
4. Commerce Checkout Redirect module (link)
Upon click the Checkout link from your cart page, this module redirects anonymous users to the default drupal user login page, forcing them to login or register before seeing the checkout page. It then automatically redirects them to the checkout form.
If you want an enhanced version of this function, then checkout the Commerce Kickstart project because they developed a custom kickstart version of the Checkout Redirect module which presents a Login or Register page instead of just the Register page. It's a more traditional ecommerce-y display. That module is located in:
commerce_kickstart-7.x-2.0\ profiles\ commerce_kickstart\ modules\commerce_kickstart\ commerce_kickstart_checkout_redirect
What did I choose?
I chose the Checkout Login module. At the end of the day nothing really got me my registration form in the 1-page checkout, but the more I think about it the more I don't even think it's necessary to make someone register. Let's let the system do it automatically after they pay - this makes the checkout super simple. Who cares if they didn't get to choose thier own password, upon checkout Drupal automatically sends them and email with a temporary password and reset instructions.
One other thing I should mention is that I'm using the Email Registration module, so users don't need to know "yet-another" username.
Feel free to comment back about any other login/registration methods I may have missed.