WCS Ordering Process

In IBM WCS both cart and orders are managed in the same table for a user, a cart transitions through various states and this is used to identify the cart state.
For example a pending order would have orders.state as "P", while a submitted order will have ORDERS.state as "M"

Review following link for more information on Order state transition

In general checkout flow supports both AJAX and non AJAX version of server side processing, review AJAX URL's defined in following OOB Struts configuration files for supported AJAX actions
/Stores.war/WEB-INF/struts-config-order-services.xml has all the AJAX versions of the command defined in it.

1. Add to Cart: User is browsing the site as anonymous, guest or authenticated user and adds an item from browse pages to cart

You can call the OOB non AJAX version "/OrderChangeServiceItemAdd" which is mapped as follows in struts-config

<action parameter="com.ibm.commerce.orderitems.commands.OrderItemAddCmd" path="/OrderChangeServiceItemAdd" type="com.ibm.commerce.struts.BaseAction">
If you want to use AJAX version use "/AjaxOrderChangeServiceItemAdd" command

<action parameter="order.addOrderItem" path="/AjaxOrderChangeServiceItemAdd" type="com.ibm.commerce.struts.AjaxComponentServiceAction">
Refer following link for various AJAX actions supported by this Fascade

Both AJAX and non AJAX finally make use of following implementation This uses following OOB controller command
- Extends com.ibm.commerce.orderitems.commands.OrderItemBaseCmdImpl

Any customization would require extension of OOB OrderItemAddCmdImpl

2. View Cart: User clicks on View Cart Page

At this step you want to display guest the cart content with list of order items with pending order status

You can use following OOB Struts action url "/OrderItemDisplay"
    path="/OrderItemDisplay" type="com.ibm.commerce.struts.BaseAction">
    <set-property property="https" value="0:1"/>
    <set-property property="authenticate" value="0:0"/>
Review following link for more details on optional and mandatory input parameters for this URL

This action internally makes use of following OOB controller command      
Control the various calculations that needs to be performed before you display the Cart Page
E.g by passing following in URL calculationUsageId=-1&calculationUsageId=-2&calculationUsageId=-7 you are triggering calculation of Tax, discount, Shipping

Any customization would require extension of OOB OrderItemDisplayCmdImpl

3. Shipping Page: User clicks on checkout and is navigated to shipping page

            path="/OrderItemUpdate" type="com.ibm.commerce.struts.BaseAction">
            <set-property property="https" value="0:1"/>
            <set-property property="authenticate" value="0:0"/>

This action used following OOB command com.ibm.commerce.orderitems.commands.OrderItemUpdateCmdImpl

4. Payments Page: User navigates to payments page

This flow typically includes adding single/multiple payment information to an order, once the payment information is submitted
we can use following command for processing before forwarding user to review order screen

The OOB /OrderProcess should be used for this purpose,
it is implemented by following OOB command com.ibm.commerce.order.commands.OrderPrepareCmdImpl

Pass appropriate payment parameters to add the payment information entered to an Order.

5. Review Order User navigates to review order page and submits order
The OOB /OrderProcess should be used for final Order submission, as mentioned in previous step this URL
implements OOB com.ibm.commerce.order.commands.OrderProcessCmdImpl command.

6. Submit Order: Order Submission and post processing

Once an Order is submitted OrderProcessCmdImpl Calls RaiseOrderEventCmd to raise ORDER_SUBMISSION_EVENT

any customization to this command would require extension of
com.ibm.commerce.order.event.RaiseOrderSubmitEventCmdImpl command which is the default implementation.

com.ibm.commerce.order.event.ProcessOrderSubmitEventCmdImpl which is default implementation of OOB
com.ibm.commerce.order.event.ProcessOrderSubmitEventCmd listens to ORDER_SUBMISSION_EVENT and takes care
of transferring the order to the external system.

This is the appropriate command for customization If you need any customization in Order XML which is posted to external system

Jangan Lupa Tinggalkan Komentarnya di Kolom komentar jika ada bug, atau artikelnya error atau tilisannya salah ya sahabat
wisata tradisi game kuliner