Class ExternalPaymentProvider<P extends PaymentSummary>

    • Constructor Detail

      • ExternalPaymentProvider

        public ExternalPaymentProvider​(org.springframework.web.reactive.function.client.WebClient webClient,
                                       com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                                       com.broadleafcommerce.common.extension.TypeFactory typeFactory,
                                       ExternalPaymentProperties properties)
    • Method Detail

      • patchPayment

        public PaymentSummary patchPayment​(UpdatePaymentRequest updatePaymentRequest,
                                           Integer version,
                                           @Nullable
                                           String lockToken,
                                           @Nullable
                                           com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Description copied from interface: PaymentProvider
        Updates the payment based on the provided UpdatePaymentRequest. This method can be used to partially update the payment. To do so provide only the fields you would like to update. The default implementation archives the payment if UpdatePaymentRequest.getAmount() is equal to zero.
        Specified by:
        patchPayment in interface PaymentProvider<P extends PaymentSummary>
        Parameters:
        updatePaymentRequest - the request payload used to update the payment
        version - the payment version
        lockToken - the token that owns the payment lock
        context - Context information related to multitenancy
        Returns:
        the updated payment summary.
      • archivePayment

        public void archivePayment​(String paymentId,
                                   Integer version,
                                   @Nullable
                                   String lockToken,
                                   @Nullable
                                   com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Description copied from interface: PaymentProvider
        Archives the payment based on the provided id and version.
        Specified by:
        archivePayment in interface PaymentProvider<P extends PaymentSummary>
        Parameters:
        paymentId - the context id of the payment
        version - the payment version
        lockToken - Token that can be used to unlock the cart's payment
        context - context information related to multitenancy
      • lockCartPayments

        public Map<String,​String> lockCartPayments​(@NonNull
                                                         @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                         @Nullable
                                                         com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: PaymentProvider
        Locks the cart's payments to ensure that all of the work done within the CheckoutWorkflow and checkout process in general is consistently interacting with payments that will not change. With these locks in place, only this executing process will have access to modify the payments, until the lock TTL expires. Note: make sure that the checkout process can sufficiently be contained within the payment lock TTL. This can be configured in PaymentTransactionServices.
        Specified by:
        lockCartPayments in interface PaymentProvider<P extends PaymentSummary>
        Parameters:
        cart - the Cart whose payments are to be locked.
        contextInfo - context information around sandbox and multitenant state.
        Returns:
        A map of payment id to lock token.
      • lockPayments

        protected Map<String,​String> lockPayments​(@NonNull
                                                        @NonNull LockPaymentRequest lockPaymentRequest,
                                                        @Nullable
                                                        com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Locks the payments based on the given LockPaymentRequest.
        Parameters:
        lockPaymentRequest - the LockPaymentRequest
        contextInfo - context information around sandbox and multitenant state
        Returns:
        A map of payment id to lock token.
        Throws:
        PaymentLockException - if a lock could not be obtained.
      • lockAndRetrievePayments

        protected LockPaymentsResponse lockAndRetrievePayments​(@NonNull
                                                               @NonNull LockPaymentRequest lockPaymentRequest,
                                                               @Nullable
                                                               com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Locks the payments based on the given LockPaymentRequest.
        Parameters:
        lockPaymentRequest - the LockPaymentRequest
        contextInfo - context information around sandbox and multitenant state
        Returns:
        A map of payment id to lock token.
        Throws:
        PaymentLockException - if a lock could not be obtained.
      • finalizePaymentsForCheckout

        public UpdatePaymentsResponse finalizePaymentsForCheckout​(String cartId,
                                                                  Map<String,​String> paymentLockTokens,
                                                                  @Nullable
                                                                  com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: PaymentProvider
        The PaymentTransactionServices internally prepares and finalizes the payments for checkout.
        Specified by:
        finalizePaymentsForCheckout in interface PaymentProvider<P extends PaymentSummary>
        Parameters:
        cartId - the owner id of the PaymentSummaries to finalize
        paymentLockTokens - Tokens that can be used to unlock the cart's payments
        contextInfo - context information around sandbox and multitenant state.
      • blockCustomerMutabilityForPayments

        public UpdatePaymentsResponse blockCustomerMutabilityForPayments​(@NonNull
                                                                         @NonNull String cartId,
                                                                         Map<String,​String> paymentLockTokens,
                                                                         boolean markTransactionsIneligibleForAutoReversal,
                                                                         @Nullable
                                                                         com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: PaymentProvider
        Blocks customer mutability for the cart's payments.
        Specified by:
        blockCustomerMutabilityForPayments in interface PaymentProvider<P extends PaymentSummary>
        Parameters:
        cartId - the owner id of the PaymentSummaries to finalize
        paymentLockTokens - Tokens that can be used to unlock the cart's payments
        markTransactionsIneligibleForAutoReversal - Determines if the payments' transactions should be marked ineligible for automatic reversal
        contextInfo - context information around sandbox and multitenant state.
      • transferPaymentsToCSR

        public UpdatePaymentsResponse transferPaymentsToCSR​(String cartId,
                                                            Map<String,​String> paymentLockTokens,
                                                            @Nullable
                                                            com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: PaymentProvider
        The PaymentTransactionServices internally prepares and transfers the payments to the CSR user. The expectation is that the payments will no longer be owned by the customer and cannot be accessed except by the CSR user.
        Specified by:
        transferPaymentsToCSR in interface PaymentProvider<P extends PaymentSummary>
        Parameters:
        cartId - the owner id of the PaymentSummaries to transfer
        paymentLockTokens - Tokens that can be used to unlock the cart's payments
        contextInfo - context information around sandbox and multitenant state.
      • transferPaymentsToCustomer

        public UpdatePaymentsResponse transferPaymentsToCustomer​(String cartId,
                                                                 Map<String,​String> paymentLockTokens,
                                                                 @Nullable
                                                                 com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: PaymentProvider
        The PaymentTransactionServices internally prepares and transfers the payments to the customer user.
        Specified by:
        transferPaymentsToCustomer in interface PaymentProvider<P extends PaymentSummary>
        Parameters:
        cartId - the owner id of the PaymentSummaries to transfer
        paymentLockTokens - Tokens that can be used to unlock the cart's payments
        contextInfo - context information around sandbox and multitenant state.
      • getBaseUri

        protected org.springframework.web.util.UriComponentsBuilder getBaseUri()
        Gets the base URI common to all requests this provider will make.
        Returns:
        a URI components builder with the base URI set up
      • getType

        protected org.springframework.core.ParameterizedTypeReference<P> getType()
        Gets the type reference for payment summary.
        Returns:
        type reference for payment summary
      • getPageType

        protected org.springframework.core.ParameterizedTypeReference<ResponsePageGenerator<P>> getPageType()
        Gets the type reference for a page generator of item list items.
        Returns:
        type reference for a page generator of item list items
      • getMapType

        protected org.springframework.core.ParameterizedTypeReference<Map<String,​String>> getMapType()
        Gets the type reference for a list of item list items.
        Returns:
        type reference for a list of item list items
      • writePaymentLockTokensAsHeaderString

        protected String writePaymentLockTokensAsHeaderString​(Map<String,​String> paymentLockTokens)
      • getServiceClient

        protected String getServiceClient()