I need some feedback. I had intended each sales order to be independent of any outside access. No email (expect in unresolvable problems) and no accounts. Maximum security. There is no user side data to hack, spoof, or impersonate. No social engineering possible and even if an order is compromised the attacker only has read access to the data. That may not be realistic. Roughly 2% of sales required their order number either due to seller never being provided it (connectivity issues) or it being lost or written down incorrectly.
What do you think. Is having no notifications and lookups a bad idea?
I see 5 possible resolutions:
Option A)
Change nothing. Sellers should be more responsible. Major problem with this is http isn't a guaranteed service. Loss of connectivity could result in seller never getting order #. There is never any risk to funds. If user never saw order # then they couldn't have seen the deposit address and the order will just expire unfunded.
Option B)
Assign order # before sales form is submitted. Will require changing the code somewhat and seems clunky but it would work. User error is still an issue but it rules out the connectivity issues in A.
Option C)
Email user their order # and a link to status page on order creation. Less respect for privacy but the email message would be spartan and non descriptive. "Order # 99999 has been created. View status here:"
Option D)
Provide lookup form for Order #. The issue is in making it deterministic. If users is validated by the lookup form, order id would be sent to user.
Option E)
Your idea.
I personally like it the way is, but coupled with my suggestion below, there should be some way to look up the status of the order. This promotes maximum anonymity (which I think is ideal, but RISKY for you, something you'll need to weigh in with your comfort level).
Keep it so the funding address is given at the same time the Order # is given so the customer can't claim he was given one but not the other. If http fails, then the order is never fulfilled and should be pruned after 2 weeks or so.
Key: Display the order # in the html BEFORE the payment address so that if http connection is lost midway through, they still cannot risk their funds by being derpy and sending them even though the page had not fully loaded and they'll never get their order #. Details first, payment second.Maybe make including an e-mail address OPTIONAL, and if they choose to provide that information you could e-mail them the Order # and link. This would provide a combination of nearly all your options and incorporate the benefits of each.
What do you think about Order #? They are obviously sequential which makes brute forcing them easier. I never consider usernames to be a secure piece of information but a sequence does make attacking weak passwords significantly easier. Would it be better to have a Order ID which is not sequential and instead is a hash* of the order details (i.e. Order ID: KJYXLQ).
I think this would be good. Having the Order #s the way they are now makes it easy to remember, but much less secure and much more prone to some sort of tinkering. I'd recommend hashing it with a salt... So Order # 10321 = hash(str(10321)+"lolthisistangiblecryptosalt"). This is simple, but it would be ideal to shrink the hash down to nothing more than 16 characters. 10 would be more ideal. Less opens you to the risk of brute forcing again. This makes it manageable for the customer to keep track of.