Checkout flow
This section introduces the checkout flow: the process of buying items that were placed into the shopping cart.

Checkout flow is the process of buying the items in the shopping cart.
To buy products, end-customer should provide additional details, such as delivery address, and also make the payment using his credit card or some other means of payment. Checkout flow facilitate this data collection and collecting the payment.
Checkout flow has two main parts
- User Interface: Showing order information to end-customer, collecting information such as delivery address from him and collecting payment. This is done by the Checkout flow pagetype and templates.
- Business logic: Creating deliveries and communicating with thirdparty systems, such as ERP systems if required, and Calculating delivery costs, VAT and order grand total. This is done by the pricing rules plugin.
Changing the default checkout flow
- To change the user interface, simply use a different checkout flow template (Edit the checkout page and go to the Templates tab). You can have multiple checkout flows in the same website.
This article describes the overview of checkoutflow plugin and how to customize it.
This article describes how to create your own checkout flow plugin. Checkout flow plugin contains the business logic for building the order carrier with information such as customer info, deliveries and payment info. In most cases the default implementation is sufficient, but the developer may need to modify to suit it to special requirements.
This article describes how to customize adding customer info to the order carrier in the Checkoutflow plugin.
CustomerInfoFactory class creates the CustomerInfo carrier into the order carrier.
In the default checkout flow implementation, information such as billing and delivery addresses are added based on the SecurityToken of the current user. Also, the person id and customer number from the relations module will be used. You should override the methods shown if you would like to change this behaviour.
This article describes how to customize adding a delivery into to the order carrier in the Checkoutflow plugin.
The default implementation works with a single delivery, and makesure all order rows are part of this delivery. If you are working with multiple deliveries in a single order, you need to override this method.
This article describes how to customize adding an order row into the order carrier in the Checkoutflow plugin. Default implementation fetches the list price for the article, and uses the article display name as order row description.You may change the order row description or comments through customization.
This section explains how to add additional information to an order using checkout flow. Additional information can be added to the order, delivery or to the payment. Usually the information common to the whole order is added as AdditionalOrderInfo, and information specific to deliveries are added as AdditionalDeliveryInfo. AdditionalPaymentInfo are usually added by the payment provider plugins.
This section explains how the actual ordercarrier is created by the checkout flow plugin. Extend the OrderFactory if you would like to change the ExternalOrderID created.
When a order is created, the order external reference id and its payments reference id is automatically created by Litium Studio. This article shows how to change the auto generated PaymentInfo reference id. Changing the auto generated reference is most useful in ERP integration scenarios where ERP system expects a reference id in a pre-defined format.