JDK 17 is required for Broadleaf release trains 2.0.0-GA, and beyond.
This release requires PaymentGatewayCommon version 2.0.5 or greater.
Enhanced SavedPaymentMethod features to support Billing lifecycle
Added API functionality to read and execute payments for a SavedPaymentMethod to integrate with BillingServices.
Introduce endpoint for gathering SavedPaymentMethods for a set of owningUserIds.
Introduce endpoints to execute payment transactions based on a SavedPaymentMethod.
Introduce endpoints for looking up and recording SavedPaymentMethod transaction results by requestId.
Added SavedPaymentMethodTransactionExecutionRequest to handle transactions made against a SavedPaymentMethod.
Added validation ensuring that the request user matches the saved payment method
Updated logic creating a Payment based on a SavedPaymentMethod to declare the type & gatewayType from the SavedPaymentMethod.
Added logic to archive SavedPaymentMethods if a hard decline is encountered while using the payment method.
Added hook point in DefaultTransactionExecutionUtil to populate TransactionExecutionDetail#getAdditionalResponseAttributes.
Updated the Payment domain.
Added simple field, shouldArchivePaymentDueToFailedInitialTransaction, to optionally declare whether the payment should be archived when the initial Auth or AuthAndCapture transaction fails.
Added simple field, requestId, to track the request that created the payment.
Added Liquibase scripts to populate this field by default in the database.
Enhanced gateway error handling.
Added new transaction status, REQUEST_NOT_RECEIVED_BY_GATEWAY, to track transactions that failed before gateway connection.
Interpret InvalidCreatePaymentRequestException as InvalidTransactionExecutionRequestException for SavedPaymentMethodTransactionExecutionEndpoint interactions.
Added isShouldSavePaymentForFutureUse field to the payment summary.
Added new Payment Owner type, PAYMENT_ACCOUNT_PROCESSING_REQUEST, to represent a Billing event.
Added Payment#getAttributes to the PaymentRequest#getAdditionalFields during request creation.
Fixed bug that allowed customers to create payments for submitted orders.
Added validation to prevent creating new Payments through the CustomerPaymentManagementEndpoint when an existing Payment for the same cart has a CUSTOMER_MUTABILITY_BLOCKED status.
Updated DefaultTransactionExecutionService#getTransactionReferenceId to invoke the new PaymentGatewayTransactionService#identifyTransactionReferenceIdOverrideForSubsequentTransactions method from PaymentGatewayCommon.
This ensures transaction reference ID can be overridden for non-initial transactions.
Updated DefaultPaymentManagementService to populate PaymentInfo.addressByType from the equivalent field in Payment
Updated DefaultPaymentManagementService to invoke the new PaymentGatewayPaymentModificationService#modifyFullPaymentForCreate method from PaymentGatewayCommon.
This allows gateway-specific overrides of all PaymentInfo fields, instead of being limited to PaymentGatewayPaymentModificationService#modifyPaymentMethodProperties like before.
Updated DefaultPaymentRequestService.createPaymentRequest to include a breakdown of order subtotal, adjustments total, shipping total, and tax total on the PaymentRequest, conditional on whether the new broadleaf.paymenttransaction.service.discriminated.include-transaction-amount-breakdown property is enabled.
In order to support OMS consolidated refunds, the PaymentTransaction domain, as well as TransactionExecutionRequest and similar DTOs have been modified to support multiple source entity IDs.
Added new PaymentCheckoutCompletionListener that will listen for checkout completion events, and sends out its own paymentPostCheckout events that can be listened to.
Added payment gateway reference to the payment attributes map.
Added new endpoints to support handling of payment gateway fulfillment callback responses.
Added property discriminated per payment gateway to determine whether or not to include the breakdown of transaction amounts.
Added isShouldSavePaymentForFutureUse field to the PaymentSummary