flutter_stripe

Last updated:

0 purchases

flutter_stripe Image
flutter_stripe Images
Add to Cart

Description:

flutter stripe

Flutter Stripe #

The Stripe Flutter SDK allows you to build delightful payment experiences in your native Android and iOS apps using Flutter. We provide powerful and customizable UI screens and elements that can be used out-of-the-box to collect your users' payment details.

Features #
Simplified Security: We make it simple for you to collect sensitive data such as credit card numbers and remain PCI compliant. This means the sensitive data is sent directly to Stripe instead of passing through your server. For more information, see our Integration Security Guide.
Apple Pay: We provide a seamless integration with Apple Pay.
Google Pay: The plugin can easily act as payment provider for the Pay plugin that enables you to seamlessly integrate Google Pay or Apple Pay. All you need to do is add your stripe publishable key to the payment profile.
Payment methods: Accepting more payment methods helps your business expand its global reach and improve checkout conversion.
SCA-Ready: The SDK automatically performs native 3D Secure authentication if needed to comply with Strong Customer Authentication regulation in Europe.
Native UI: We provide native screens and elements to securely collect payment details on Android and iOS.
Pre-built payments UI: Learn how to integrate Payment Sheet, the new pre-built payments UI for mobile apps. This pre-built UI lets you accept cards, Apple Pay, and Google Pay out of the box, and includes support for saving & reusing cards.
Recommended usage
If you're selling digital products or services within your app, (e.g. subscriptions, in-game currencies, game levels, access to premium content, or unlocking a full version), you must use the app store's in-app purchase APIs. See Apple's and Google's guidelines for more information. For all other scenarios you can use this SDK to process payments via Stripe.
Installation #
dart pub add flutter_stripe
copied to clipboard
Requirements #
Android
This plugin requires several changes to be able to work on Android devices. Please make sure you follow all these steps:

Use Android 5.0 (API level 21) and above
Use Kotlin version 1.5.0 and above: example
Requires Android Gradle plugin 8 and higher
Using a descendant of Theme.AppCompat for your activity: example, example night theme
Using an up-to-date Android gradle build tools version: example and an up-to-date gradle version accordingly: example
Using FlutterFragmentActivity instead of FlutterActivity in MainActivity.kt: example
Add the following rules to your proguard-rules.pro file: example

-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivity$g
-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter$Args
-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter$Error
-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter
-dontwarn com.stripe.android.pushProvisioning.PushProvisioningEphemeralKeyProvider
copied to clipboard

Rebuild the app, as the above changes don't update with hot reload

These changes are needed because the Android Stripe SDK requires the use of the AppCompat theme for their UI components and the Support Fragment Manager for the Payment Sheets
If you are having troubles to make this package to work on Android, join this discussion to get some support.
iOS
Compatible with apps targeting iOS 13 or above.
To upgrade your iOS deployment target to 13.0, you can either do so in Xcode under your Build Settings, or by modifying IPHONEOS_DEPLOYMENT_TARGET in your project.pbxproj directly.
You will also need to update in your Podfile:
platform :ios, '13.0'
For card scanning add the following to your Info.plist:
<key>NSCameraUsageDescription</key>
<string>Scan your card to add it automatically</string>
<key>NSCameraUsageDescription
&lt;string&gt;To scan cards&lt;/string&gt;</key>
<string>To scan cards</string>
copied to clipboard
Web (Experimental)
Now you can use Stripe with Flutter web! Notice right now it is highly experimental and only a subset of features is implemented. Namely:

Create paymentmethod
Confirm payment intent
Confirm setup intent
Create token
Confirm payment element (recommended way of handling payments on web)

To use Stripe on web, it is required to add flutter_stripe_web in your pubspec file
Usage #
Card payments #
There are 3 ways of handling card payments



Method
Ease of use
description
Implementation docs




Payment sheet
Easy
Our recommended way of handling payments. It offers localization, animations and error handling out of the box.
docs


Cardfield
Medium
Single line cardfield. Offers more flexibility but has less built-in functionality.
docs


Card form
Medium
Similar as the cardfield but the entry fields are spread across multi lines
docs



Wallets #
This library fully supports native Apple Pay and Google pay integration.
Mobile elements [BETA] #
We also support the customer sheet mobile element. Check out the docs to learn more on how to set it up.
Financial connections #
We also support Financial connections in our latest sdk. Check out the docs to learn more on how to set it up.
Stripe initialization #
To initialize Stripe in your Flutter app, use the Stripe base class.
Stripe offers publishableKey, stripeAccountId, threeDSecureParams and merchantIdentifier. Only publishableKey is required.
Dart API #
The library offers several methods to handle stripe related actions:
Future<PaymentMethod> createPaymentMethod(...);
Future<PaymentIntent> handleNextAction(...);
Future<PaymentIntent> confirmPayment(...);
Future<void> configure3dSecure(...);
Future<bool> isApplePaySupported();
Future<void> presentApplePay(...);
Future<void> confirmApplePayPayment(...);
Future<SetupIntent> confirmSetupIntent(...);
Future<PaymentIntent> retrievePaymentIntent(...);
Future<String> createTokenForCVCUpdate(...);

Future<void> initPaymentSheet(...);
Future<void> presentPaymentSheet(...);
Future<void> confirmPaymentSheetPayment()
copied to clipboard
The example app offers examples on how to use these methods.
Pay Plugin support #
flutter_stripe fully supports the Pay plugin from the Google Pay team. By including a few lines you can integrate Stripe as a payment processor for Google / Apple Pay:
Future<void> onGooglePayResult(paymentResult) async {
final response = await fetchPaymentIntentClientSecret();
final clientSecret = response['clientSecret'];
final token = paymentResult['paymentMethodData']['tokenizationData']['token'];
final tokenJson = Map.castFrom(json.decode(token));

final params = PaymentMethodParams.cardFromToken(
token: tokenJson['id'],
);
// Confirm Google pay payment method
await Stripe.instance.confirmPayment(
clientSecret,
params,
);
}
copied to clipboard
Run the example app #

Navigate to the example folder cd example
Install the dependencies

flutter pub get


Set up env vars for the flutter app and a local backend.

Get your test Stripe API keys
cp lib/.env.example.dart lib/.env.dart and set your Stripe publishable key.
cp server/.env.example server/.env and set the variable values in your newly created .env file.


Install the server dependencies in the server directory:

cd server
npm install or yarn --cwd "server"


Start the example

Terminal 1:

Move to the server directory: cd server
Run npm or yarn: npm start or yarn --cwd "server" start


Terminal 2:

Move to the lib directory: cd lib
Run flutter: flutter run





Additional steps for webhook forwarding

Install the stripe-cli
Run stripe listen --forward-to localhost:4242/webhook

Contributing #
You can help us make this project better, feel free to open an new issue or a pull request.
Setup
This project uses melos to manage all the packages inside this repo.

Install melos: dart pub global activate melos
Setup melos in your local folder: melos bootstrap

Useful commands

Format melos run format
Analyze melos run analyze
Test melos run unittest
Pub get melos run get

Publishing

Use melos version and melos publish to keep all the repositories in sync

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.