VbzCart/docs/pieces/checkout
see also coding/checkout
About
The checkout subsystem handles customer interaction from the point when the customer presses "check out" on the shopping cart up to the point where the order is placed ("finish" button in old system).
Requirements
- Record shipping information
- Record payment information
- Allow customer to indicate that payment address is same as shipping.
- Prevent customer from proceeding if required fields are missing or contain invalid data.
- Keep records of customer information as entered and also as interpreted for order processing.
- Send notification email to customer and store when order is placed.
- Present customer with printable/saveable receipt.
Process
Conversion
Converting the cart data to order data seems to be one of the trickiest parts to get right.
Basically, the Cart object now supervises the creation of new records as needed. Customer objects just create customer records, not address or name or whatever.
We'll treat the shopping cart as being Page 0 of the checkout process, even though it's handled by a different page class, because it is part of the checkout navigation flow i.e. from Page 1, the "back" button takes you back to the shopping cart page.
It looks like the best way to handle form navigation is to have constant control names for the "back" and "next" buttons and to include the name of the submitting form in a hidden field.[1]
Where form data does not need to be saved, switching modes for a given page can be done with a clickable link rather than a button.
- page 0: shopping cart - handled by a different Page class, but can be navigated to from here (i.e. pressing the "back" button on Page 1)
- output:
RenderCart()
- output:
- page 1: shipping info
- page 2: payment info
- input:
CaptureBilling()
- input:
- page 3: confirmation
- page 4: take action, provide receipt
I/O functions are handled by the vcPageContent_ckout
class.
Related Pages
- /archive: outdated stuff