@RequiredArgsConstructor
public class AuthorizeAndCapture {
 private final PayPalCheckoutTransactionService payPalCheckoutTransactionService;
 public void performAuthorizeAndCapture() {
		 CurrencyUnit currency = Monetary.getCurrency(currencyCode);
		 MonetaryAmount transactionTotal = Monetary.getDefaultAmountFactory().setCurrency(currency).setNumber(amount).create();
		 PaymentRequest paymentRequest = new PaymentRequest()
		        .transactionReferenceId(transactionReferenceId)// This is the unique transaction reference ID
		        .transactionTotal(transactionTotal)
		        .additionalField(MessageConstants.ORDER_ID, "paypal_order_id")
                .tenantId("TENANT"); // Declare the tenant id to help identify where transaction results should be recorded
	 	PaymentResponse paymentResponse = payPalCheckoutTransactionService.authorizeAndCapture(paymentRequest);
		paymentResponse.isSuccessful();
		paymentResponse.getGatewayResponseCode(); //PayPal Response Code
		paymentResponse.getFailureType(); // Failure type in case the transaction was not successful.
	   	paymentResponse.getRawResponse(); // PayPal raw response stored as a JSON object.
        paymentResponse.getResponseMap().get(MessageConstants.AUTHORIZATION_ID); // PayPal Authorization ID used for subsequent transactions.
	}
}