I am working on a payment process that is pretty typical. Users will be required to create a password during the sign up process so they can retrieve their (online) purchase later.
In the course of this checkout process, I will be asking if they already have an account so that the account creation step won't be required before the final checkout.
I'm worried about users who forget they have an account but then reach the final step, where the system will not be able to allow them to create a password for the email address they entered.
If the user (who has an existing account) chooses to skip login, but then tries to use the same email address at the end, how should I handle this?
I've thought of the following options (most of which have been used in practice somewhere):
Redirect to sign-in form on detection of a duplicate address.
This option bothers me because then the "Pay now" button is not the final step, unless I redirect back to a censored payment details form, and then I might need to allow edits to that form, all complication I'd rather not have.
Throw an error on duplicate email address and change the password field to to a log-in or add a log-in option.
Errors are yucky.
Always have a log-in option on the final step.
Allow some sort of AJAX login on the final step.