// Automatic FlutterFlow imports
import '/backend/backend.dart';
import '/backend/schema/structs/index.dart';
import '/actions/actions.dart' as action_blocks;
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/actions/index.dart'; // Imports other custom actions
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
// Begin custom action code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!
import 'package:flutter_stripe/flutter_stripe.dart';
Future<bool> confirmPayment3DSecure(
BuildContext context, String clientSecret) async {
try {
// Confirm the payment intent
await Stripe.instance
.confirmPayment(paymentIntentClientSecret: clientSecret);
// Retrieve the payment intent
PaymentIntent paymentIntent =
await Stripe.instance.retrievePaymentIntent(clientSecret);
return true; // Payment successful
} on StripeException catch (e) {
// Handle specific Stripe errors
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
"Payment failed. An error occurred",
style: TextStyle(
color: FlutterFlowTheme.of(context).primaryText,
),
),
duration: Duration(milliseconds: 4000),
backgroundColor: FlutterFlowTheme.of(context).error,
),
);
return false; // Payment failed due to StripeException
} catch (e, stackTrace) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
'An unexpected error occurred. Please try again.',
style: TextStyle(
color: FlutterFlowTheme.of(context).primaryText,
),
),
duration: Duration(milliseconds: 4000),
backgroundColor: FlutterFlowTheme.of(context).error,
),
);
return false; // Payment failed due to unexpected error
}
}
// Set your action name, define your arguments and return parameter,
// and then add the boilerplate code using the green button on the right!
๐ Handling 3D Secure Card Payments with a Custom Action in FlutterFlow
What is 3D Secure (3DS)?
3D Secure (3DS) is an authentication method that provides an additional layer of authentication for credit card transactions, protecting against fraudulent actors. 3DS asks your customers to verify their identity with the card issuer during payment.
When integrating Stripe with APIs in FlutterFlow, handling 3D Secure (3DS) authentication ๐ is essential for processing card payments securely. This custom action simplifies 3D Secure authentication by utilizing the Client Secret of the Stripe Payment Intent.
๐น Please use the flutter_stripe
package to handle Stripe payments efficiently.
๐น How It Works
To use this custom action, pass the Client Secret ID associated with the Payment Intent. The action will:
โ
Automatically open the 3D Secure checkout page where users can authenticate their payment.
โ
Return true
upon successful authentication, allowing you to proceed with further actions.
๐ Implementation Steps
1๏ธโฃ Retrieve the Client Secret from your Stripe Payment Intent.
2๏ธโฃ Pass the Client Secret to the custom action.
3๏ธโฃ Handle the returned value (true
) to trigger subsequent actions (e.g., order confirmation, and database updates).
โจ This approach ensures a seamless and secure ๐ก๏ธ payment authentication process within your FlutterFlow application.
๐ก Found this helpful? Don't forget to Like, Comment, and Share to help others in the community!
#Flutterflow #Stripe #3DS