|
Tip
|
The 3.x versions are Spring Boot 4.1+ compatible. |
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.
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.