Implement robust order capture

Oracle Commerce includes robust order capture tools to ensure that orders are persisted and problems can be resolved if there are errors during the payment or order submission process.

The tools available depend on the options specified in the Setup tab in the Payment Processing settings in the administration interface. This tab has a Payment Options drop-down with two options:

  • Allow Partial Payment/Early Persist -- When a shopper attempts to submit an order, Commerce saves it in the PENDING_PAYMENT state before processing payments.
  • Full Payment Required -- When a shopper attempts to submit an order, the order state is INCOMPLETE until all payments are authorized.

The Setup tab also includes a Price Hold Period field. If Allow Partial Payment/Early Persist is selected, the Price Hold Period setting specifies the amount of time the shopper is given to provide missing payment information before an order is cancelled. The order's prices will not change during this interval.

Use early persist

If the Allow Partial Payment/Early Persist option is selected, when a shopper submits an order, the order is initially placed in the PENDING_PAYMENT state. If a payment fails but Commerce does not receive an error, the order remains in this state. During the price hold period, the shopper can add payments to the order, but cannot make other changes or delete the order. A record of the order is visible in the Agent Console, so an agent can also attempt to resolve the issue. At the end of the price hold period, if the order is still in the PENDING_PAYMENT state, it is marked for cancellation.

For example, the order processing might proceed as follows:

  1. A shopper begins the checkout process using a web checkout system.
  2. The shopper enters payment information on the payment provider’s screen.
  3. An error occurs with the payment that prevents the order submission from completing successfully.
  4. The order remains in the PENDING_PAYMENT state, and the shopper does not receive an order confirmation.
  5. The shopper can see the order in the PENDING_PAYMENT state and resubmit the order with payment. The merchant can also see the order and take steps to resolve the issue.

To support this option, you must ensure that your order history and checkout widgets can handle the PENDING_PAYMENT state, and that your storefront allows the shopper to see order issues and take corrective action. For example, the storefront should enable the shopper to see order status, update payment information, and resubmit an order that has not been successfully submitted. On storefronts built using the Open Storefront Framework, the Allow Partial Payment/Early Persist option is recommended, and the included widgets are designed to handle these situations.

On storefronts built using Storefront Classic, you will need to use the Split Payment widget and customize it and other widgets on your storefront to support these behaviors. See Enable Split Payments for more information.

Note that if an anonymous shopper has a partially paid order, the order must be completed before the session times out, because the shopper has no way to access the order when returning to the site later. However, if the Order Payment Initiated email is enabled, the shopper is sent an email with the order ID when the order is created, and can supply this ID to a customer service agent for completing the order.

Use full payment required

The Full Payment Required option should be used only on storefronts built using Storefront Classic. If this option is selected, and authorization for any payment method fails, an error is displayed, and any other authorizations that succeeded are voided. The shopper must re-enter all payments and resubmit the order.

However, if Commerce for some reason does not receive a response about an authorization, it cannot determine if there has been an error, and the order remains in the INCOMPLETE state. If the shopper then tries to remove the items from the shopping cart, the shopper is prevented from removing the last item, and the order is saved in the FAILED state if the system is aware of the payment attempt. The order can be viewed on the Order History page of the storefront and in the Agent Console.