2009/09/17
Checkout Redux
I’m releasing a new osCommerce add on, Checkout Redux. Checkout Redux is a play on the phrases “checkout redone” and “checkout reduced”. I started with the desire to do something that I meant to do five years ago, which is write a PayPal IPN contribution that worked for me.
The problem that I have with the PayPal Standard that comes with osCommerce is that it duplicates a lot of code that is included elsewhere. This produces difficulty whenever it is used with another contribution that modifies checkout, as the changes need to be put in both places.
Checkout Redux avoids this by refactoring checkout in such a way that it always inserts orders in the database before redirecting to an external processor (orders processed via curl and other backend methods still operate the same way as always). This eliminates the need for the PayPal module to insert the order in the database. In addition, Checkout Redux moves the insert order and order notification (email) code out of checkout process and into their own modules.
The result of this is that we can now call the checkout notification module from either checkout_process.php or a notification handler (e.g. standard_ipn.php). This way, when a contribution needs to change the emailing code, it can always do so in just one place. No need to modify multiple files to implement a single change.
The other major goal of this contribution is to shorten checkout. It does this by reducing the number of pages in the registration process and by skipping pages where no choice is made. Now, if the customer enters checkout without logging in, it immediately offers a chance to enter a shipping (or billing if only downloadable products are in the cart) address. When the customer submits the address, if there are no errors, it creates an account and sends the customer to the checkout_shipping page. This saves two clicks in the process (clicking to the register page and the create_account_success.php page).
More clicks are reduced by skipping pages where no choice is made. If a store only has one shipping method, then checkout_shipping is not needed. Forward to checkout_payment. Similarly, if there is only one option on checkout_payment, then it can be skipped. Onward to checkout_confirmation. As a result, the typical checkout for a new customer is reduced from seven clicks to three (checkout, submit address, and confirm).
The package includes a modified PayPal module (both the payment module and the IPN handler), a Google Analytics integration (to demonstrate the advantages of some of the checkout success changes), alternate files for use with the DHTML State Selection add on, and an example of how to integrate another add on that changes the checkout_process.php file: the Club osC Discount Coupon System.
hi, this is a great contribution. i would love to install it, but wanted to know how stable is it? i’m scared it would mess something up on a live production site.
thx, ed
Comment by ed — 2009/09/21 @ 11:50
There is always risk when installing a new contribution. One thing that you can do to mitigate the risk is install on a test site first so that you can exercise it with your own circumstances.
I would also warn you that this contribution rewrites checkout_process.php thoroughly. It would be a difficult install on a live site with checkout_process.php modified already.
In terms of stability, it’s hard to say. I haven’t received any bug reports, but I also haven’t received any positive feedback. I am confident in the contribution, but that is entirely based on my own testing. As always, users are much more innovative in finding bugs than are developers.
Comment by eCartz — 2009/09/21 @ 16:31