Broadleaf Microservices
  • v1.0.0-latest-prod

Order Fulfillment Flow Configuration

Overview

There are several configuration properties available for order fulfillment flows, which control:

  • Automatically moving to the next step in fulfillment

  • Introducing or removing intermediate processing steps

Auto Reverse or Refund Payment for Cancelled Fulfillment

Enables automatic reverse authorizing / refunding of payment on a fulfillment after it’s been cancelled.

Note that the reverse authorize transaction for the payment is not executed until the entire order has been fully captured and/or cancelled. By waiting to reverse all of the related authorizations, we can simply reverse authorize all the unused authorized amount.

Important
Partial reverse authorization may not be supported by your payment gateway. If it’s not, then partially cancelled fulfillment will not trigger reverse authorize transactions. Instead, the authorization will be left to naturally expire according to how the associated gateway/bank handles the transaction’s life span. For more details on payment gateway features and partial reverse authorization transactions, please see the Payment Gateway Key Components Docs and Payment Summary Docs
  • Property: broadleaf.orderoperation.fulfillment-cancelled.auto-reverse-refund.enabled

  • Registers the PaymentReversalFulfillmentCancelledListener

  • Enabled by default.

Auto Reverse Unused Payments after Fulfilling Final Fulfillment

Enables automatic reverse authorizing of any remaining authorized but non-captured payments on an order whenever the last fulfillment is fulfilled.

  • Property: broadleaf.orderoperation.fulfillment-fulfilled.auto-reverse-unused-payments.enabled

  • Registers the PaymentReversalFulfillmentFulfilledListener

  • Enabled by default.

Auto-fulfill After Payment is Captured

When a CSR hits "Capture Payment and Fulfill Items" for a fulfillment in the admin, this property ensures that the corresponding fulfillment is automatically be shifted into the FULFILLING or FULFILLED status (depending on other configuration).

Note: when this action is engaged, we start by changing the status of the fulfillment to CAPTURING_PAYMENT, see Capturing Payment Status to trigger the payment capturing portion of the process.

Important
Capturing payment for the fulfillment potentially involves claiming amounts that were previously captured during the checkout process. See the Capturing Payment Status for more details.
Important
This should have the same value as broadleaf.order.metadata.indicate-auto-fulfill-after-payment-captured in OrderServices. (see Order Services Configuration)
  • Property: broadleaf.orderoperation.fulfillment-processing.auto-fulfill.after-payment-captured

  • Registers the AutoFulfillPaymentCapturedListener

  • Enabled by default.

Auto-fulfill Virtual Goods After Order is Created

Enables automatic fulfillment of VIRTUAL goods following a successful checkout. This will automatically capture payment for the fulfillment as a prerequisite, and immediately moves the fulfillment into the FULFILLING or FULFILLED status (depending on other configuration) after.

Important
Capturing payment for the fulfillment potentially involves claiming amounts that were previously captured during the checkout process. See the Capturing Payment Status for more details.
  • Property: broadleaf.orderoperation.fulfillment-processing.auto-fulfill-virtual.after-order-created

  • Registers the AutoFulfillVirtualOrderCreatedListener

  • Disabled by default.

Intermediate Fulfilling Step

If true, during auto-fulfill, VIRTUAL fulfillments will go through the FULFILLING status before they can be marked as FULFILLED.This will allow external systems to perform virtual fulfillment processes.

That system must be responsible for notifying this service to change the status to FULFILLED once fulfillment is complete.

This should have the same value as broadleaf.order.metadata.enable-fulfilling-step in OrderServices. (see Order Services Configuration)

  • Property: broadleaf.orderoperation.fulfillment-processing.enable-fulfilling-step

  • Disabled by default.

Asynchronous Payment Transactions

Declares if components required to handle asynchronous capture and refund payment transactions are enabled. This should only be enabled if your project includes a payment gateway that only returns capture and refund transaction results asynchronously. Related components: FulfillmentCaptureWebhookListener and ReturnConfirmationRefundWebhookListener

  • Property: broadleaf.orderoperation.async-payment-transaction-support.enabled

  • Disabled by default.

Payment Distribution

Declares whether or not to distribute a payment transaction amount across the Order’s payments proportionally.

Note
To enable the display of payment distribution ratios in the admin, please enable the Payment Distribution Metadata property
  • Property: broadleaf.orderoperation.service.distribute-payment-transaction-amount-across-payments

  • Disabled by default

Auto-capture After Order is Created (DEPRECATED)

Enables automatic payment capture for VIRTUAL goods following order creation. Immediately moves the fulfillment into the CAPTURING_PAYMENT status, which will trigger payment capture.

  • Property: broadleaf.orderoperation.fulfillment-processing.auto-capture.after-order-created

  • Registers the AutoCaptureVirtualOrderCreatedListener

  • Disabled by default.

Important
This property is deprecated since 1.7.6-GA

Relevant Configuration in Order Services

Payment Capture Step

Similarly to the Intermediate Fulfilling Step above, the intermediate capturing step is also optional, and can be skipped. To skip this step, the Fulfillment Status Change API in this service should be used to move into FULFILLED or FULFILLING instead of CAPTURING_PAYMENT, which means that such configuration resides in the caller of that API rather than within this service. See the Payment Capture Step in Order Services Configuration for how to configure this for the Broadleaf Admin.