Interface CheckoutUtils

All Known Implementing Classes:
CheckoutUtilsImpl

public interface CheckoutUtils
Interface for utility methods used by Struts Action classes related to the checkout process. Note that some Administrator functions involved in editing orders use these methods as well.

When the application needs to create an instance that implements CheckoutUtils, it calls BusinessObjectFactory.createUtilsObject(java.lang.String) , which finds the name of the Java class to instantiate from the "checkoutUtilsImplemeter" setting in the appComponents.properties file.

The default "checkoutUtilsImplemeter" is CheckoutUtilsImpl.

Author:
David Tobey
  • Method Details

    • findCheckoutScreen

      String findCheckoutScreen(BaseForm baseForm) throws Exception
      Determines what checkout screen to direct the user to based on the status of the session and the store's database configuration. The possible screen names returned are:
      • "catalogMode", if the store's "catalogMode" database setting is set.
      • "cart", if the user's cart is empty.
      • "forceLogin", if the "forceLogin" database setting is set and the user is not logged in.
      • "inviteLogin", if the "inviteLogin" database setting is set and the user has not declined to log in and is not logged in.
      • "checkoutAddresses", if the user has not entered in all the required address fields for the order, and the "useComboScreen" setting is not set.
      • "checkoutPayment", if payment information is required, the total of the current order is greater than zero, and the "useComboScreen" setting is not set.
      • "checkoutCombo", if the user has not entered in all the required address fields, or if payment information is required, and if the "useComboScreen" setting is set.
      • "checkoutConfirm", if none of the other screens apply.

      The above screen names correspond to ActionForwards defined in the "/WEB-INF/conf/order/struts-config-order.xml" file.

      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      A string identifying the name of the checkout screen to direct the user to.
      Throws:
      Exception
    • validateBillingFields

      boolean validateBillingFields(BaseForm baseForm) throws Exception
      Validates the required billing address fields in the user's cart. Loops through the "billingRequired" database setting to check which fields are required.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      true if all the required billing fields are present in the user's cart. false if not.
      Throws:
      Exception
    • validateDeliveryFields

      boolean validateDeliveryFields(BaseForm baseForm) throws Exception
      Validates the required delivery address fields in the user's cart. Loops through the "deliveryRequired" database setting to check which fields are required.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      true if all the required billing fields are present in the user's cart. false if not.
      Throws:
      Exception
    • prepareLoginForm

      void prepareLoginForm(BaseForm baseForm, org.apache.struts.action.ActionServlet servlet) throws Exception
      Initializes an instance of LoginForm and populates it from request parameters. Used on the invite login screen and the force login screen.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Throws:
      Exception
    • prepareRegisterForm

      void prepareRegisterForm(BaseForm baseForm, org.apache.struts.action.ActionServlet servlet) throws Exception
      Initializes an instance of RegisterForm and populates it from request parameters. Used on the checkout register screen.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Throws:
      Exception
    • processCheckoutLogin

      org.apache.struts.action.ActionForward processCheckoutLogin(BaseForm baseForm, javax.servlet.http.HttpServletResponse response) throws Exception
      Processes a login request during the checkout process. Used when a user logs in from the invite login screen or the force login screen.

      The method runs CustomerProcessor.processLogin(Map) to process the login request.

      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      An ActionForward corresponding to the results of the processing. The ActionForward will be named "failureInvalidLogin" or "success".
      Throws:
      Exception
    • processCheckoutRegister

      org.apache.struts.action.ActionForward processCheckoutRegister(BaseForm baseForm) throws Exception
      Processes a request to register a new customer account during the checkout process. Used when a user registers from the checkout register screen.

      This method runs CustomerProcessor.processRegister(Map) to process the register request.

      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      An ActionForward corresponding to the results of the processing. The ActionForward will be named "failureUserName" if the user name is already taken, or "success".
      Throws:
      Exception
    • processDeclineLogin

      org.apache.struts.action.ActionForward processDeclineLogin(BaseForm baseForm) throws Exception
      Processes a request to continue the checkout process without logging in or creating an account. Used when a user declines to log in from the invite login screen.

      This method places an attribute in the user's session named "declinedLoginBeforeCheckout".

      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      An ActionForward corresponding to the results of the processing. Always returns the "success" ActionForward.
      Throws:
      Exception
    • loadShippingOptions

      Collection loadShippingOptions(BaseForm baseForm) throws Exception
      Loads the active shipping options for display to the user. Used on the checkout addresses screen. Loops through the classes in the "activeShippingProcessors" database setting and invokes the loadShippingOptions method in each to get the available options.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      A Collection containing each of the shipping option available for the user to select.
      Throws:
      Exception
      See Also:
    • prepareCheckoutAddressesForm

      void prepareCheckoutAddressesForm(CheckoutAddressesForm baseForm) throws Exception
      Initializes an instance of CheckoutAddressesForm with address and shipping option information. Used on the checkout addresses screen. If the current user is a logged in customer, populates the form with the account's address information.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Throws:
      Exception
    • prepareCheckoutAddressesAddressBookForm

      void prepareCheckoutAddressesAddressBookForm(CheckoutAddressesForm baseForm) throws Exception
      Throws:
      Exception
    • prepareCheckoutShippingForm

      void prepareCheckoutShippingForm(BaseForm baseForm) throws Exception
      Initializes an instance of CheckoutAddressesForm with address and shipping option information. Used on the checkout addresses screen. If the current user is a logged in customer, populates the form with the account's address information.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Throws:
      Exception
    • processCheckoutAddresses

      org.apache.struts.action.ActionForward processCheckoutAddresses(BaseForm baseForm) throws Exception
      Processes submissions to record addresses in the current user's cart. Used for requests to "/CheckoutAddresses.do".

      Invokes CartProcessor.processCheckoutAddresses(Map) to process the submitted address information. Then invokes processInventoryDiscountCheck(BaseForm) to perform a check on inventory and discounts for items in the cart.

      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      An ActionForward corresponding to the results of the processing. The ActionForward will be named "failureItemsAdjusted", "failureAllItemsRemoved", or "success".
      Throws:
      Exception
    • processCheckoutAddresses

      org.apache.struts.action.ActionForward processCheckoutAddresses(BaseForm baseForm, javax.servlet.http.HttpServletResponse response) throws Exception
      Processes submissions to record addresses in the current user's cart. Used for requests to "/CheckoutAddresses.do".

      Invokes CartProcessor.processCheckoutAddresses(Map) to process the submitted address information. Then invokes processInventoryDiscountCheck(BaseForm) to perform a check on inventory and discounts for items in the cart.

      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      response - The HttpServletResponse object associated with the request. If present and the "autoSavedCartToken" cookie is present, that cookie will be removed so no personal information is retrievable through the cookie.
      Returns:
      An ActionForward corresponding to the results of the processing. The ActionForward will be named "failureItemsAdjusted", "failureAllItemsRemoved", or "success".
      Throws:
      Exception
    • processInventoryDiscountCheck

      Map processInventoryDiscountCheck(BaseForm baseForm) throws Exception
      Performs a check on the inventory and processes discounting for the current user's cart. Makes sure that if products are to be decremented on checkout, no skus are out of stock.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      A Map containing a key named resultCode: 0 indicates no changes, 1 indicates the cart was adjusted, 2 indicates all order items were removed (due to inventory being out of stock).
      Throws:
      Exception
    • processCheckoutShipping

      org.apache.struts.action.ActionForward processCheckoutShipping(BaseForm baseForm) throws Exception
      Processes submissions to record shipping options in the current user's cart. Used for requests to "/CheckoutShipping.do".

      Invokes processShipping(BaseForm) to process shipping charges and processTax(BaseForm) to process tax charges.

      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      An ActionForward corresponding to the results of the processing. The ActionForward will be named "failureShippingProcess", "failureTaxProcess", "success", "successNoPaymentRequired", or "successNoPaymentRequiredConfirm".
      Throws:
      Exception
    • processShipping

      Map processShipping(BaseForm baseForm) throws Exception
      Processes shipping charges for the current user's cart. Called when the checkout addresses form is processed.

      Goes through the classes in the "activeShippingProcessors" database setting and invokes the processShipping(Map) method in each to process the charges. The incoming baseForm should have a property named shippingOption containing the shipping option selected by the user.

      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      A Map with a key named resultCode, which is 0, if the processing was successful. A non-zero integer indicates there was a problem and further processing should stop.
      Throws:
      Exception
      See Also:
    • processTax

      Map processTax(BaseForm baseForm) throws Exception
      Processes tax charges for the current user's cart. Called when the checkout addresses form is processed.

      Goes through the classes in the "activeTaxProcessors" database setting and invokes the processTax(Map) method in each to process the charges.

      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      A Map with a key named resultCode, which is 0, if the processing was successful. A non-zero integer indicates there was a problem and further processing should stop.
      Throws:
      Exception
    • preparePaymentForms

      void preparePaymentForms(BaseForm baseForm, org.apache.struts.action.ActionServlet servlet) throws Exception
      Creates payment form instances and populates them from the request parameters. Used on the checkout payment screen so each of the active payment forms can be displayed. Loops through the "activePaymentForms" database setting to find the class names of the payment forms to create.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Throws:
      Exception
    • preparePaymentForm

      void preparePaymentForm(org.apache.struts.action.ActionForm paymentForm, BaseForm baseForm, org.apache.struts.action.ActionServlet servlet) throws Exception
      Prepares a given payment form by populating its properties from the request's parameters.
      Parameters:
      paymentForm - The payment form being populated from the request.
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Throws:
      Exception
    • processCheckoutPayment

      org.apache.struts.action.ActionForward processCheckoutPayment(BaseForm baseForm, org.apache.struts.action.ActionServlet servlet) throws Exception
      Processes submissions of payment information by the current user. Used for requests to "/CheckoutPayment.do".

      Loops through each of the classes in the "activePaymentForms" and "activePaymentProcessors" database settings to find the payment form that was used to submit payment information, and its corresponding PaymentProcessor. Uses the "paymentFormCount" request parameter to determine which form was submitted.

      Invokes validatePaymentForm(ActionForm, BaseForm) to validate the submission, and if valid, processPayment(PaymentProcessor, ActionForm, BaseForm) to process it.

      If a confirmation screen must be displayed, this method places the payment form and the name of the payment processor in the customer's session, so that the processCheckoutConfirm method can retrieve them.

      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      An ActionForward corresponding to the results of the processing. The ActionForward will be named "failureFormValidation", "failurePaymentProcess", "success", or "successCheckoutConfirm".
      Throws:
      Exception
    • validatePaymentForm

      boolean validatePaymentForm(org.apache.struts.action.ActionForm paymentForm, BaseForm baseForm) throws Exception
      Validates a given payment form for a given request. Used when a submission is made from the checkout payment screen to validate the submission of payment information. The method simply runs the validate method of the payment form, saving any validation errors to the request.
      Parameters:
      paymentForm - The payment form that was used by the user to submit payment information.
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      true if the submission passes validation. false if not.
      Throws:
      Exception
    • processPayment

      int processPayment(PaymentProcessor paymentProcessor, org.apache.struts.action.ActionForm paymentForm, BaseForm baseForm) throws Exception
      Processes payment information for a request with a given payment processor. Used when a submission is made from the checkout payment screen to process payment information.

      This method runs the processPayment(Map) method of the incoming PaymentProcessor, which returns a Map that includes a key named resultCode. This method returns the int value of that resultCode.

      If the resultCode is not equal to zero, it indicates an error in the processing of the payment. This method will look up an error message in the "/WEB-INF/classes/resources/payment/application.properties" file corresponding to the resultCode and the name of the payment processor. For example, the error message for the message key payment.errorPayflowProProcessor10000 will be placed in the request, if the payment processor was PayflowProProcessor and the resultCode was 10000. Additional error messages that follow the same naming pattern can be placed in the "/WEB-INF/classes/resources/payment/application.properties" file.

      Parameters:
      paymentProcessor - The PaymentProcessor corresponding to the payment form used by the user to submit payment information.
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Returns:
      true if the submission passes validation. false if not.
      Throws:
      Exception
    • processCheckoutConfirm

      org.apache.struts.action.ActionForward processCheckoutConfirm(BaseForm baseForm) throws Exception
      Processes a request to confirm an order. Processes the payment form stored in the session with the session's payment processor. If processing fails, a failure is returned. Otherwise, the processOrderComplete method is run.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Throws:
      Exception
    • processOrderComplete

      Map processOrderComplete(BaseForm baseForm) throws Exception
      Invoked when a order has just been completed. Decrements inventory if called for, and places the current User object, as well as the baseForm object in the request scope, for use by the JSP templates that display the invoice and send out the notification and confirmation emails.
      Parameters:
      baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
      Throws:
      Exception