@RequiredArgsConstructor
public class AuthorizeAndCapture {
private final StripeTransactionService stripeTransactionService;
public void performAuthorizeAndCapture() {
CurrencyUnit currency = Monetary.getCurrency(currencyCode);
MonetaryAmount transactionTotal = Monetary.getDefaultAmountFactory().setCurrency(currency).setNumber(amount).create();
PaymentRequest paymentRequest = new PaymentRequest()
.transactionReferenceId(transactionReferenceId)
.transactionTotal(transactionTotal)
.additionalField("PAYMENT_METHOD_ID", paymentMethodId) // The id of the payment method obtained from the Stripe Element integration
.additionalField("STRIPE_CUSTOMER_ID", stripeCustomerId); // Id of the Stripe customer. This field is only expected if the transaction is being performed with a saved payment method or if you wish to tie the payment method to an existing customer. Otherwise, this field should not be provided.
PaymentResponse paymentResponse = stripeTransactionService.authorizeAndCapture(paymentRequest);
paymentResponse.isSuccessful();
paymentResponse.getGatewayResponseCode(); // The Stripe response code
paymentResponse.getFailureType(); // Failure type in case the transaction was not successful.
paymentResponse.getRawResponse(); // Stripe raw response stored as a JSON object.
paymentResponse.getResponseMap().get("TRANSACTION_ID"); // The Stripe transaction ID, which will be used for subsequent transaction requests.
paymentResponse.getResponseMap().get("PAYMENT_INTENT_ID"); // The Stripe Payment Intent ID.
paymentResponse.getResponseMap().get("ERROR_CODE"); // The Stripe error response code.
paymentResponse.getResponseMap().get("ERROR_MESSAGE"); // The Stripe error message.
}
}