Class DefaultPayPalCheckoutTransactionService
- java.lang.Object
-
- com.broadleafcommerce.paypal.micro.gateway.service.DefaultPayPalCheckoutTransactionService
-
- All Implemented Interfaces:
com.broadleafcommerce.paymentgateway.service.PaymentGatewayTransactionService,com.broadleafcommerce.paymentgateway.service.PaymentGatewayTypeAware,PayPalCheckoutTransactionService
public class DefaultPayPalCheckoutTransactionService extends Object implements PayPalCheckoutTransactionService
- Author:
- Nathan Moore
-
-
Constructor Summary
Constructors Constructor Description DefaultPayPalCheckoutTransactionService(PayPalCheckoutProvider paypalCheckoutService, PayPalApiProvider apiProvider, PayPalOrderService payPalOrderService, PayPalCheckoutApiProperties properties, org.springframework.retry.support.RetryTemplate retryTemplate, PayPalUtils utils)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddAssertionHeaderForRefundOnBehalfOf(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)This is only needed when using the Marketplaces and Platforms solution from PayPal.com.broadleafcommerce.paymentgateway.domain.PaymentResponseauthorize(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)com.broadleafcommerce.paymentgateway.domain.PaymentResponseauthorizeAndCapture(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)protected PayPalAuthorizeResponseauthorizeOrder(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)Executes anDefaultTransactionTypes.AUTHORIZEtransaction based on the providedPaymentRequestcom.broadleafcommerce.paymentgateway.domain.PaymentResponsecapture(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)protected PayPalCaptureAuthResponsecaptureAuthorization(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)Executes aDefaultTransactionTypes.CAPTUREfor the providedAuthorizationprotected PayPalCaptureOrderResponsecaptureOrder(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)Executes anDefaultTransactionTypes.AUTHORIZE_AND_CAPTUREtransaction based on the providedPaymentRequest.protected PayPalApiProvidergetApiProvider()StringgetGatewayType()protected PayPalCheckoutProvidergetPaypalCheckoutService()protected PayPalOrderServicegetPayPalOrderService()protected PayPalCheckoutApiPropertiesgetProperties()protected org.springframework.retry.support.RetryTemplategetRetryTemplate()protected PayPalUtilsgetUtils()protected booleanisPaymentDecline(String errorCode)Since PayPal uses a 400 HTTP response for many different types of failures, this method leverages the errorCode to determine if there was an error in the processing of the payment.protected booleanisPaymentMethodDecline(String errorCode)Since PayPal uses a 400 HTTP response for many different types of failures, this method leverages the errorCode to determine if there was an error in the processing of the payment method.protected voidprocessException(@NonNull Exception e, @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentResponse paymentResponse, @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)This method is responsible for levering the exception, paymentRequest, & transactionType to populate the paymentResponse instead of allowing the exception to be thrown.com.broadleafcommerce.paymentgateway.domain.PaymentResponserefund(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)protected PayPalRefundResponserefundPayment(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)Executes aDefaultTransactionTypes.REFUNDfor the captured payment.protected PayPalAuthorizationRetrievalResponseretrieveAuthorization(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)com.broadleafcommerce.paymentgateway.domain.PaymentResponsereverseAuthorize(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)protected PayPalVoidAuthResponsevoidAuthorization(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)Executes aDefaultTransactionTypes.REVERSE_AUTHfor the providedAuthorizationobject.protected com.broadleafcommerce.paymentgateway.domain.PaymentResponsevoidAuthorization(@NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest, @NonNull com.broadleafcommerce.paymentgateway.domain.enums.TransactionType transactionType)
-
-
-
Constructor Detail
-
DefaultPayPalCheckoutTransactionService
public DefaultPayPalCheckoutTransactionService(PayPalCheckoutProvider paypalCheckoutService, PayPalApiProvider apiProvider, PayPalOrderService payPalOrderService, PayPalCheckoutApiProperties properties, org.springframework.retry.support.RetryTemplate retryTemplate, PayPalUtils utils)
-
-
Method Detail
-
authorize
public com.broadleafcommerce.paymentgateway.domain.PaymentResponse authorize(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)- Specified by:
authorizein interfacecom.broadleafcommerce.paymentgateway.service.PaymentGatewayTransactionService
-
capture
public com.broadleafcommerce.paymentgateway.domain.PaymentResponse capture(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)- Specified by:
capturein interfacecom.broadleafcommerce.paymentgateway.service.PaymentGatewayTransactionService
-
authorizeAndCapture
public com.broadleafcommerce.paymentgateway.domain.PaymentResponse authorizeAndCapture(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)- Specified by:
authorizeAndCapturein interfacecom.broadleafcommerce.paymentgateway.service.PaymentGatewayTransactionService
-
reverseAuthorize
public com.broadleafcommerce.paymentgateway.domain.PaymentResponse reverseAuthorize(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)- Specified by:
reverseAuthorizein interfacecom.broadleafcommerce.paymentgateway.service.PaymentGatewayTransactionService
-
refund
public com.broadleafcommerce.paymentgateway.domain.PaymentResponse refund(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)- Specified by:
refundin interfacecom.broadleafcommerce.paymentgateway.service.PaymentGatewayTransactionService
-
addAssertionHeaderForRefundOnBehalfOf
protected void addAssertionHeaderForRefundOnBehalfOf(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)This is only needed when using the Marketplaces and Platforms solution from PayPal. Specifically, see Issuing a Refund.Adds the
PayPal-Auth-Assertionheader to thepaymentRequestto ensure it's included for refund requests, otherwise, the request will be considered unauthorized when attempting to refund on behalf of a seller.- Parameters:
paymentRequest-PaymentRequestDTO.
-
voidAuthorization
protected com.broadleafcommerce.paymentgateway.domain.PaymentResponse voidAuthorization(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest, @NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.enums.TransactionType transactionType)
-
captureAuthorization
protected PayPalCaptureAuthResponse captureAuthorization(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)
Executes aDefaultTransactionTypes.CAPTUREfor the providedAuthorization- Parameters:
paymentRequest- The request payload that should be used to form the transaction- Returns:
- a
PayPalCaptureAuthResponse
-
authorizeOrder
protected PayPalAuthorizeResponse authorizeOrder(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)
Executes anDefaultTransactionTypes.AUTHORIZEtransaction based on the providedPaymentRequest- Parameters:
paymentRequest- The request payload that should be used to form the transaction- Returns:
- an
PayPalAuthorizeResponserepresenting the final state of the transaction
-
retrieveAuthorization
protected PayPalAuthorizationRetrievalResponse retrieveAuthorization(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)
-
captureOrder
protected PayPalCaptureOrderResponse captureOrder(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)
Executes anDefaultTransactionTypes.AUTHORIZE_AND_CAPTUREtransaction based on the providedPaymentRequest. For PayPal, this captures theOrderimmediately with no authorization.- Parameters:
paymentRequest- The request payload that should be used to form the transaction- Returns:
- a
PayPalCaptureOrderResponse
-
voidAuthorization
protected PayPalVoidAuthResponse voidAuthorization(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)
Executes aDefaultTransactionTypes.REVERSE_AUTHfor the providedAuthorizationobject. For PayPal, this means voiding the original authorization.- Parameters:
paymentRequest- The request payload that should be used to form the transaction- Returns:
- the
PayPalVoidAuthResponse
-
refundPayment
protected PayPalRefundResponse refundPayment(@NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)
Executes aDefaultTransactionTypes.REFUNDfor the captured payment.- Parameters:
paymentRequest- The request payload that should be used to form the transaction- Returns:
- a
PayPalRefundResponse
-
processException
protected void processException(@NonNull @NonNull Exception e, @NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentResponse paymentResponse, @NonNull @NonNull com.broadleafcommerce.paymentgateway.domain.PaymentRequest paymentRequest)This method is responsible for levering the exception, paymentRequest, & transactionType to populate the paymentResponse instead of allowing the exception to be thrown.- Parameters:
e- the exception indicating a failed payment gateway transactionpaymentResponse- the object that will hold the transaction resultspaymentRequest- the request that was used to execute the transaction
-
isPaymentMethodDecline
protected boolean isPaymentMethodDecline(String errorCode)
Since PayPal uses a 400 HTTP response for many different types of failures, this method leverages the errorCode to determine if there was an error in the processing of the payment method. For example, an incorrect card number, expiration date, etc.- Parameters:
errorCode- the error code returned by PayPal- Returns:
- whether or not the failure was due to the payment method being declined
- See Also:
DefaultTransactionFailureTypes.INVALID_PAYMENT_METHOD
-
isPaymentDecline
protected boolean isPaymentDecline(String errorCode)
Since PayPal uses a 400 HTTP response for many different types of failures, this method leverages the errorCode to determine if there was an error in the processing of the payment. For example, a credit card decline should be considered a processing failure, whereas a request validation issue would not.- Parameters:
errorCode- the error code returned by PayPal- Returns:
- whether or not the failure was due to the payment method being declined
-
getGatewayType
public String getGatewayType()
- Specified by:
getGatewayTypein interfacecom.broadleafcommerce.paymentgateway.service.PaymentGatewayTypeAware
-
getPaypalCheckoutService
protected PayPalCheckoutProvider getPaypalCheckoutService()
-
getApiProvider
protected PayPalApiProvider getApiProvider()
-
getPayPalOrderService
protected PayPalOrderService getPayPalOrderService()
-
getProperties
protected PayPalCheckoutApiProperties getProperties()
-
getRetryTemplate
protected org.springframework.retry.support.RetryTemplate getRetryTemplate()
-
getUtils
protected PayPalUtils getUtils()
-
-