This is an improved version of
Thanks to the enom component, it can tell a potential client that a domain name is taken. Now people can manually enter the amount of extra bandwidth and disk space that they want. I created a separate script to handle the checkout, it's a little more tedious for the client, but it handles multiple forms of payment better.
Added error checking to the forms. Also added a Credit Card information gathering interface. It's currently disabled though. A working version of this this shopping cart can be found here. The complete source code can be found here.