Broadleaf Microservices
  • v1.0.0-latest-prod

Cart Operation Release Notes for 2.2.0-BETA-1

Warning

This is a BETA release and not generally available. Contents may change prior to GA.

Tip
The 2.x versions are Spring Boot 3 compatible.

Requirements

  • JDK 17 is required for Broadleaf release trains 2.0.0-GA, and beyond.

New Features & Notable Changes

  • This version includes all changes up to 2.1.3 Release Notes

  • Allowed more control when selecting which asset to show in the cart for an item from one of the Product’s assets besides simply choosing the primary. Instead, users can now configure a preferred asset tag to match against. By default it is cart.

  • Added properties to configure whether the Variant’s name is used as the item’s name instead of the Product’s. This will be true by default.

    • New properties:

      • broadleaf.cartoperation.service.preferred-asset-tag with default cart

      • broadleaf.cartoperation.service.use-variant-name-in-cart with default true

  • Introduced support for Product Characteristics and Product Terms.

  • Introduced support for recurring and usage pricing concepts.

    • Primarily this looks like being able to include characteristics marked as targetableForPricing and product terms in PriceableTarget payloads.

    • See Cart Services 2.1.0 Release Notes for related domain changes.

    • Includes support for including characteristics marked as targetableInRuleBuilders in Offer Engine requests.

  • Introduced support for new recurring and free trial offers.

Adyen Payment Gateway Support

This release includes support for the Adyen payment integration.

  • Added an ability to send the additional data in the CheckoutProcessRequest, needed to execute payment transactions, esp. properties that should not be persisted to the Payment#paymentMethodProperties. See CheckoutProcessRequest#sensitivePaymentMethodData

Bug Fixes

  • Resolved a bug where a failed payment transaction causes the PaymentSummary in the CheckoutResponse to be out of date

Important

This release includes a potentially breaking change if you have an override/implementation of one of the following methods:

  • CheckoutService#processCheckout(…​)

  • CheckoutWorkflow#execute(…​)

    • DefaultCheckoutWorkflow#executeActivity(…​) (protected method)

  • RequiresSecurePaymentInformationActivity#execute(…​)

  • PaymentTransactionExecutionService#executeCartPaymentTransactions(…​)

  • DefaultPaymentTransactionExecutionService#executeCartPaymentTransactions(…​) (protected method)

  • DefaultPaymentTransactionExecutionService#executePaymentTransaction(…​) (protected method)

  • DefaultPaymentTransactionExecutionService#buildTransactionExecutionRequest(…​) (protected method)

If this effects your project, you’ll encounter a compilation issue. These compilation issues should be simple to resolve - ie look to gather data from the provided SensitivePaymentMethodData objects, or simply pass them along to the next service component.

In short, these method signature changes within the CartOps were needed to effectively pass the SensitivePaymentMethodData representations through the checkout process, & do so in a way that is very intentional about which components do/do not have access to the data.

This change was also made to future-proof these method signatures by passing objects, rather than simple params.

  • Fix bug where a failed payment transaction causes the PaymentSummary in the CheckoutResponse to be out of date