Jump to content
GLWalker

Purchase Without an Account?

Recommended Posts

Recently Ive been developing a very large addon for store owners to allow their employess to use without having to give them access to the store admin. A employee may view and process orders, email customers, create customer accounts, edit ordrs, and take orders over the phone using its own built in checkout process. Orders can be made for existing customers or strictly guest.

 

Anyhow, while using the mod, it dawned on me that I had esencially created a method of making guest orders for customers that call in and do not want an account. Any order took this way goes into a customer account that is stricly owned by the store, and the address books can be set to a higher number than the regular customer accounts.

 

So I was wondering, with the couple of guest checkouts available, - 1 deletes customer info after checkout, the other flags it as guest and allows the guest to become customer later. I think for guest you should not keep account data if you tell them they are a guest! 

 

Why not create a simple flow for guest that is very unintrusive to the core code by:

 

1) Have a select guest option - when initiated a session is set, lets call it guest_order. If guest_order is set, then the customer_id is the same as the stores customer account.

 

2) After setting the session, the guest is then directed to the store's customer accounts address book process where they enter their address, with the session set there will also be two more fields in the address book, phone and email.

 

3) After filling out complete address info, then two more sessions are set for phone and email, they would work very much like the comments session.

 

4) Customer goes throught the checkout and when checkout_process is initiated it takes the session info for phone and email and inserts it rather than the stores defualt info. Then it clears the phone and email session. - Probably delete any address book entries made as well. But thats another area that would be handled by session assignment as well.

 

5) On checkout success guest_order session is cleared, order is done, customer can move on.

 

 

All the while the guest_order session is set certian things need to be disabled, such as access to account areas.

 

Most of this could all be done using a header tag module. The checkout process would need some editing to tell it if guest_phone/guest_email exist then insert this else default. Unless it is possible to override it with a header tag module - but I dont think so.

 

Overall a lot less code changes, no database changes, and orders page would have all the info needed for contacting customer. So far as I can figure in this scenario, - only  2 to 4 core files to change. Or 1 file, checkout_process, and then add new files for the address book/checkout new address selections.

 

Thoughts?

Edited by GLWalker

Follow the community build:

BS3 to osCommerce Responsive from the Get Go!

Check out the new construction:

Admin Gone to Total BS!

Share this post


Link to post
Share on other sites

Both being on account at same time is possible, - but you did remind me of a very important aspect I overlooked - the shopping cart. Perhaps a customer_id could just be randomly generated and set by session.

 

As for the customer data it is all stored in the orders table so the customer is still notified VIA any admin order updates. And of course a token for checking updates would work well.

 

Overall - trying to put the concept of very little to no core updates into the process. Can it be done? I think so.

 

But now I must recode my addon to try using a random ID in case 2 or more employess are taking strictly "guest" orders at the same time. +1


Follow the community build:

BS3 to osCommerce Responsive from the Get Go!

Check out the new construction:

Admin Gone to Total BS!

Share this post


Link to post
Share on other sites

Yes, you brought up a lot I overlooked on a regular customer account. For what I am building it is no problem becuase the files are all controlled within their own private area and I can bypass the update to customer info if it is a guest.

 

Still though, it makes me think about better ways to achieve a guest checkout - making a temporary account is good, but Im looking into how to do it without hacking the core :)


Follow the community build:

BS3 to osCommerce Responsive from the Get Go!

Check out the new construction:

Admin Gone to Total BS!

Share this post


Link to post
Share on other sites

i said "(not sure if this could be a security breach)"  but this can be solved smart by sending an email to the client with a special token in the link that is inserted in the email ;)

People seem to like this idea. Want to see in action ?


This is a signature that appears on all my posts.  
IF YOU MAKE A POST REQUESTING HELP...please state the exact version
of osCommerce that you are using. THANKS

 
Get the latest Responsive osCommerce CE (community edition) here

Share this post


Link to post
Share on other sites

@@burt

Ah yes, I remeber seeing your screenshot or video for that a few months ago :thumbsup:

 

@@wHiTeHaT

 

I have confimed a random generated customer_id will work with multiple "guest checkouts if we set the id VIA session key to  bypass any create account functions we can go to the address_book, dynamically add a session based email and phone number, then collect the standard address info - BAM! order complete, all info recorded, email updates can be sent out.

 

So this bypasses any script that would want to update customer, customer_info tables, and prevents an anwanted welcome email, yet still allows for an order success email.

 

I did 2 orders at the same time simutaniously running open windows of the same browser - no conflicts, 1 a COD order, the other using Stripes test CC numbbers which had to create a connection to process

 

I set the random IDs to begin with 00, this way I think I can set up a search function to lookup only the guest orders using a match first two as 00 - as a real customer will never have an id that starts with 00.

 

But thats not on a default install, but Im sure a little tweaking can get it there.

 

Maybe next year it will see the light of day. If done correctly, it should port over to the next version with little adjustment :-

Edited by GLWalker

Follow the community build:

BS3 to osCommerce Responsive from the Get Go!

Check out the new construction:

Admin Gone to Total BS!

Share this post


Link to post
Share on other sites
I set the random IDs to begin with 00, this way I think I can set up a search function to lookup only the guest orders using a match first two as 00 - as a real customer will never have an id that starts with 00.

 

I should have known, you cannot use 0 as first character in a column that is INT - it just strips to the next whole number on insert - however - INT does allow - so the random customer_id is set to start with - followed by a few randomly generated and shuffled numbers.

 

Looking in the database table it makes it very easy to see which are quest orders as the - is very easy to spot at a glance - and I like how it represents negative in the case of a non account holding customer.

 

I did not realize that mySQL has built in regex checking, so it was very simple to create a search query using REGEXP  to find the customer_id starting with a  - . 

 

https://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp

 

http://www.guru99.com/regular-expressions.html

 

all these hidden gems


Follow the community build:

BS3 to osCommerce Responsive from the Get Go!

Check out the new construction:

Admin Gone to Total BS!

Share this post


Link to post
Share on other sites

I should have known, you cannot use 0 as first character in a column that is INT - it just strips to the next whole number on insert - however - INT does allow - so the random customer_id is set to start with - followed by a few randomly generated and shuffled numbers.

 

Looking in the database table it makes it very easy to see which are quest orders as the - is very easy to spot at a glance - and I like how it represents negative in the case of a non account holding customer.

 

I did not realize that mySQL has built in regex checking, so it was very simple to create a search query using REGEXP  to find the customer_id starting with a  - . 

 

https://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp

 

http://www.guru99.com/regular-expressions.html

 

all these hidden gems

in your opinion

which is the best guest checkout available which is compatible with 2.3.4 bootstrap?

Share this post


Link to post
Share on other sites

People seem to like this idea. Want to see in action ?

 

I do.

 

I deployed the Order Without Account module that deleted customer information but it was NOT a good experience.  Deleting customer data post-order made customers near impossible to find when they called.  It also required the customer to complete check out, which means we had a bunch of phantom accounts in the database that unexpectedly deleted themselves when we helped the customer place the order.  Overall, it was a pretty poor experience.

 

If I were to imagine an order without account system working I think whitehat's idea is the way to go.  Customer enters name, address, e-mail and checks out.  An account is created with a random password.  Customer receives an e-mail that thanks them for using guest checkout, then provides customer with login details anyway, something along the lines of "if you want to track the status of your order go here and enter your e-mail address and this code."

 

So, what about repeat "guests".  That is more challenging, I think.  On the one hand, you could just simply allow account creation with the same e-mail address.  Each time the customer checks out it creates a new account for them.  Alternatively, you *could* just insert the new order and attach the existing customer ID, though, that gets messy.

Share this post


Link to post
Share on other sites

I am already using a system that takes customer info and generates a password for them, which is then emailed to them. If they never return it works the same as PWA since they don't have to choose a password or provide any information other than that required to fulfill the order. But they do have an account and can change the password if they wish to return later and want a less random one. And I can see their orders and information.

 

I had found an add-on, which I have heavily modified and updated to work with 2.3.4. I don't remember the name for sure. It was "combined login/create account" or something similar. I thought about putting together an add-on of my own since the original had a lot of problems, but I haven't found the time.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×