Class DefaultTransactionExecutionRequestValidator
java.lang.Object
com.broadleafcommerce.paymenttransaction.service.DefaultTransactionExecutionRequestValidator
- All Implemented Interfaces:
TransactionExecutionRequestValidator
public class DefaultTransactionExecutionRequestValidator
extends Object
implements TransactionExecutionRequestValidator
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionDefaultTransactionExecutionRequestValidator(PaymentTransactionService<PaymentTransaction> paymentTransactionService, PaymentSummaryService paymentSummaryService, TransactionExecutionUtil transactionExecutionUtil) -
Method Summary
Modifier and TypeMethodDescriptionprotected StringbuildInvalidParentTransactionTypeMessage(@NonNull String transactionType, @NonNull PaymentTransaction parentTransaction, @NonNull String... expectedParentTransactionTypes) protected booleancanTransactionAmountBeLessThanAvailableAmount(TransactionExecutionRequest request, Payment payment) Deprecated, for removal: This API element is subject to removal in a future version.protected booleancanTransactionAmountBeLessThanAvailableAmount(TransactionExecutionRequest request, PaymentSummary paymentSummary) Determines if the transaction amount can be less than the available amount.protected javax.money.MonetaryAmountgetAmountAvailableForTransactionType(@NonNull Payment payment, @NonNull String transactionType) Deprecated, for removal: This API element is subject to removal in a future version.protected javax.money.MonetaryAmountgetAmountAvailableForTransactionType(@NonNull PaymentSummary paymentSummary, @NonNull String transactionType) protected PaymentSummaryServiceprotected PaymentTransactionService<PaymentTransaction>protected TransactionExecutionUtilvoidvalidate(@NonNull TransactionExecutionRequest request, @NonNull Payment payment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Checks whether or not theTransactionExecutionRequestis valid.protected voidvalidateParentTransaction(@NonNull TransactionExecutionRequest request, @NonNull Payment payment) protected voidvalidateParentTransactionAmounts(List<TransactionWithExecutableAmount> parentTransactionWithExecutableAmounts, @NonNull javax.money.MonetaryAmount transactionAmount) Validates the total amount from parent transactions is sufficient for the giventransactionAmount.protected voidvalidateParentTransactionCurrency(PaymentTransaction parentTransaction, @NonNull javax.money.MonetaryAmount transactionAmount) protected voidvalidateParentTransactionType(PaymentTransaction parentTransaction, @NonNull String transactionType) protected voidvalidateSource(@NonNull TransactionExecutionRequest request, @NonNull Payment payment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected voidvalidateTransactionAmount(@NonNull TransactionExecutionRequest request, @NonNull Payment payment) Validates that the transaction amount is valid for the given transaction type.protected voidvalidateTransactionType(@NonNull TransactionExecutionRequest request, @NonNull Payment payment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
-
Field Details
-
TRANSACTION_AMOUNT_MUST_BE_POSITIVE
- See Also:
-
TRANSACTION_AMOUNT_MUST_BE_POSITIVE_OR_ZERO
- See Also:
-
TRANSACTION_CURRENCY_MUST_MATCH_PAYMENT_CURRENCY
- See Also:
-
TRANSACTION_AMOUNT_MUST_BE_VALID_FOR_PAYMENT
- See Also:
-
TRANSACTION_AMOUNT_MUST_BE_EQUAL_TO_AVAILABLE
- See Also:
-
TRANSACTION_SOURCE_REQUIRED
- See Also:
-
TRANSACTION_SOURCE_ENTITY_TYPE_REQUIRED
- See Also:
-
TRANSACTION_SOURCE_ENTITY_ID_REQUIRED
- See Also:
-
DETACHED_CREDIT_AMOUNT_MUST_BE_LESS_THAN_OR_EQUAL_TO_THE_PARENT_TRANSACTION_AMOUNT
public static final String DETACHED_CREDIT_AMOUNT_MUST_BE_LESS_THAN_OR_EQUAL_TO_THE_PARENT_TRANSACTION_AMOUNT- See Also:
-
-
Constructor Details
-
DefaultTransactionExecutionRequestValidator
public DefaultTransactionExecutionRequestValidator(PaymentTransactionService<PaymentTransaction> paymentTransactionService, PaymentSummaryService paymentSummaryService, TransactionExecutionUtil transactionExecutionUtil)
-
-
Method Details
-
validate
public void validate(@NonNull @NonNull TransactionExecutionRequest request, @NonNull @NonNull Payment payment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:TransactionExecutionRequestValidatorChecks whether or not theTransactionExecutionRequestis valid.- Specified by:
validatein interfaceTransactionExecutionRequestValidator- Parameters:
request- TheTransactionExecutionRequestto be checked.payment- The relatedPaymentthat the request will act against.contextInfo- Context information related to multitenancy.
-
validateTransactionType
protected void validateTransactionType(@NonNull @NonNull TransactionExecutionRequest request, @NonNull @NonNull Payment payment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
validateTransactionAmount
protected void validateTransactionAmount(@NonNull @NonNull TransactionExecutionRequest request, @NonNull @NonNull Payment payment) Validates that the transaction amount is valid for the given transaction type.Only the
AUTHORIZEtransaction type is allowed to have a zero-dollar amount ($0.00), which is used by some Payment Service Providers (PSPs) for saved payment method verification, account validation, and generating multi-use tokens without charging the customer's bank.For all other transaction types (such as
CAPTURE,AUTHORIZE_AND_CAPTURE, orREFUND), zero-dollar transactions are invalid as they would attempt to collect or return `$0.00` from/to a bank account (which doesn't make sense and is rejected by gateways). Therefore, these other types must have an amount strictly greater than zero.- Parameters:
request- the transaction execution request containing the amount and type to validatepayment- the payment against which the transaction is being executed- Throws:
InvalidTransactionExecutionRequestException- if the transaction amount is negative, or is zero for a non-AUTHORIZE transaction type, or if currencies do not match
-
getAmountAvailableForTransactionType
@Deprecated(forRemoval=true) protected javax.money.MonetaryAmount getAmountAvailableForTransactionType(@NonNull @NonNull Payment payment, @NonNull @NonNull String transactionType) Deprecated, for removal: This API element is subject to removal in a future version. -
getAmountAvailableForTransactionType
protected javax.money.MonetaryAmount getAmountAvailableForTransactionType(@NonNull @NonNull PaymentSummary paymentSummary, @NonNull @NonNull String transactionType) -
canTransactionAmountBeLessThanAvailableAmount
@Deprecated(forRemoval=true) protected boolean canTransactionAmountBeLessThanAvailableAmount(TransactionExecutionRequest request, Payment payment) Deprecated, for removal: This API element is subject to removal in a future version.Determines if the transaction amount can be less than the available amount.- Parameters:
request- theTransactionExecutionRequestbeing validatedpayment- thePaymentbeing executed against- Returns:
- true if the transaction can be less than the available amount, otherwise false
-
canTransactionAmountBeLessThanAvailableAmount
protected boolean canTransactionAmountBeLessThanAvailableAmount(TransactionExecutionRequest request, PaymentSummary paymentSummary) Determines if the transaction amount can be less than the available amount.- Parameters:
request- theTransactionExecutionRequestbeing validatedpaymentSummary- thePaymentSummarybeing executed against- Returns:
- true if the transaction can be less than the available amount, otherwise false
-
validateParentTransaction
protected void validateParentTransaction(@NonNull @NonNull TransactionExecutionRequest request, @NonNull @NonNull Payment payment) -
validateParentTransactionType
protected void validateParentTransactionType(PaymentTransaction parentTransaction, @NonNull @NonNull String transactionType) -
validateParentTransactionAmounts
protected void validateParentTransactionAmounts(List<TransactionWithExecutableAmount> parentTransactionWithExecutableAmounts, @NonNull @NonNull javax.money.MonetaryAmount transactionAmount) Validates the total amount from parent transactions is sufficient for the giventransactionAmount.- Parameters:
parentTransactionWithExecutableAmounts- A list ofTransactionWithExecutableAmountsrepresenting all the parent transactions.transactionAmount- The amount to validate- See Also:
-
validateParentTransactionCurrency
protected void validateParentTransactionCurrency(PaymentTransaction parentTransaction, @NonNull @NonNull javax.money.MonetaryAmount transactionAmount) -
buildInvalidParentTransactionTypeMessage
protected String buildInvalidParentTransactionTypeMessage(@NonNull @NonNull String transactionType, @NonNull @NonNull PaymentTransaction parentTransaction, @NonNull @NonNull String... expectedParentTransactionTypes) -
validateSource
protected void validateSource(@NonNull @NonNull TransactionExecutionRequest request, @NonNull @NonNull Payment payment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
getPaymentTransactionService
-
getPaymentSummaryService
-
getTransactionExecutionUtil
-
canTransactionAmountBeLessThanAvailableAmount(TransactionExecutionRequest, PaymentSummary)