Broadleaf Microservices
  • v1.0.0-latest-prod

Payment Transaction Services Release Notes for 3.0.0-GA

Tip
The 3.x versions are Spring Boot 4.1+ compatible.

Important Updates

Spring Boot Upgrade

  • As of Broadleaf Release Train 3.0.0-GA, all microservices have been upgraded to support Spring Boot 4.1 and Java 25.

Requirements

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

New Features & Notable Changes

Allow $0 Authorizations during Checkout

  • Updated DefaultTransactionExecutionRequestValidator to allow $0.00 AUTHORIZE requests. This supports the ability to save a payment method for future use via executing a $0 Authorize transaction, such as for a subscription free trial, while ensuring AUTHORIZE_AND_CAPTURE and other transactional amounts remain strictly positive (> 0).

  • Refactored DefaultTransactionSummaryService#buildTransactionSummary to gracefully return an empty TransactionSummary rather than throwing an EntityMissingException when no payment records are found for a given owner type/ID. This changes the REST API response from a 404 Not Found to a 200 OK with an empty TransactionSummary payload, allowing downstream lookups of transaction summaries to proceed without error on zero-dollar checkouts or orders with no payments.

WebClient Access Token Threadlocal Fix

  • Avoid threadlocal context issues for access tokens on webclient builders in Spring Boot 4, backwards compatible with Spring Boot 3.5.

Bug Fixes

  • Fixed Transaction entitySourceIds being null on preexisting transaction

    • Also ensure that PaymentTransactionRef#getSourceEntityId falls back to the singular sourceEntityId when sourceEntityIds is empty like is done on PaymentTransaction#getSourceEntityId

  • Updated DefaultPaymentManagementService to catch InvalidPaymentConfigurationException thrown by PaymentGatewayPaymentModificationService.modifyFullPaymentForCreate, and rethrow as InvalidCreatePaymentRequestException to ensure the API caller receives a 400 response instead of 500

  • Prevent NPE in DefaultTransactionExecutionService#recordPaymentAttributesFromResponse when the external transaction result doesn’t have a transaction type.

  • Increased the column value length for the JpaPaymentTransaction#rawResponse field from MEDIUM_TEXT_LENGTH to LONG_TEXT_LENGTH to avoid truncation errors on longer gateway responses.

  • Updated external provider WebClient calls to merge multi-value HTTP headers from getHeaders(ContextInfo) instead of overwriting same-named headers, fixing compatibility across Spring Boot 3.5 & 4.