Interface TransactionResultService

All Known Implementing Classes:
DefaultTransactionResultService

public interface TransactionResultService
The service to record subsequent payment transaction results. Responsible for building lookup requests, recording the results from the gateway transaction response, and handling exceptions from the lookup call to the gateway.
Author:
Marie Standeven (mstandeven)
  • Method Details

    • handleRecordTransactionException

      TransactionExecutionResponse handleRecordTransactionException(@NonNull @NonNull Exception e, @NonNull @NonNull String gatewayType, @Nullable Payment payment, @Nullable PaymentTransaction pendingTransaction, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Handles the exceptions thrown when recording transaction results.
      Parameters:
      e - the exception thrown
      gatewayType - the gateway used to process this payment.
      payment - the payment being processed, if available.
      pendingTransaction - the transaction pending results, if available.
      context - the contextInfo for the request
      Returns:
      the TransactionExecutionResponse describing the resulting transaction and PaymentSummary
      Throws:
      UnsupportedOperationException - when looking up transaction results is not supported for the related payment gateway
      com.broadleafcommerce.paymentgateway.service.exception.InvalidGatewayConfigurationException - when the integration is not sufficiently configured to look up transaction results
      com.broadleafcommerce.paymentgateway.service.exception.InvalidFetchPaymentDetailsParamsException - when insufficient data is provided to look up transaction results
      com.broadleafcommerce.paymentgateway.service.exception.FetchTransactionResultsException - when an error occurred while looking up transaction results
      com.broadleafcommerce.paymentgateway.service.exception.TransactionNotFoundException - when a transaction cannot be found, based on the provided data
      com.broadleafcommerce.paymentgateway.service.exception.TransactionResultsNotAvailableException - when the pending transaction results are not yet available
      com.broadleafcommerce.common.messaging.exception.ResourceLockException - when a payment lock cannot be obtained to record pending transaction results
    • getPayment

      Payment getPayment(@NonNull @NonNull PaymentTransaction pendingTransaction, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Fetches the payment that the pending transaction belongs to. By default, this method returns the archived payment as well.
      Parameters:
      pendingTransaction - the transaction that is pending results from the gateway
      context - the contextInfo for the request
      Returns:
      the Payment that this transaction belongs to
    • buildTransactionLookupRequest

      com.broadleafcommerce.paymentgateway.domain.TransactionLookupRequest buildTransactionLookupRequest(@NonNull @NonNull Payment payment, @NonNull @NonNull PaymentTransaction paymentTransaction, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Builds the transaction details to pass to the payment gateway.
      Parameters:
      payment - the Payment that this transaction belongs to
      paymentTransaction - the transaction that is pending results from the gateway
      contextInfo - the contextInfo for the request
      Returns:
      the request object including transaction-identifying data
    • identifyPendingTransactionByTransactionIdentifier

      PaymentTransaction identifyPendingTransactionByTransactionIdentifier(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.TransactionIdentifier transactionIdentifier, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Identifies the transaction that is pending results from the gateway.
      Parameters:
      transactionIdentifier - the identifier for the transaction
      contextInfo - the contextInfo for the request
      Returns:
      the PaymentTransaction that is pending results from the gateway
    • recordChildTransactionResults

      TransactionExecutionResponse recordChildTransactionResults(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentResponse paymentResponse, @NonNull @NonNull Payment payment, @NonNull @NonNull PaymentTransaction pendingTransaction, @NonNull @NonNull String managementStateReason, @Nullable String lockToken, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Records the transaction results from the payment gateway.
      Parameters:
      paymentResponse - the payment gateway's response to the executed transaction
      payment - the Payment that this transaction belongs to
      pendingTransaction - the transaction that is pending results from the gateway
      managementStateReason - the reason for the transaction managementState, i.e. "EXTERNAL_TRANSACTION"
      lockToken - the token that owns the payment lock
      context - the contextInfo for the request
      Returns:
      the TransactionExecutionResponse describing the resulting transaction and PaymentSummary
    • identifyChildTransaction

      Optional<PaymentTransaction> identifyChildTransaction(@NonNull @NonNull Payment payment, @NonNull @NonNull PaymentTransaction pendingTransaction)
      Identifies the child transaction of the pending transaction.
      Parameters:
      payment - the Payment that this transaction belongs to
      pendingTransaction - the transaction that is pending results from the gateway
      Returns:
      the child transaction, if found