Flutter Stripe

pub package build

? flutter_stripe 仍处于测试阶段 – 如果您发现问题,请提供反馈(或贡献)?️

Stripe Flutter SDK 允许您使用 Flutter 在原生 Android 和 iOS 应用中构建出色的支付体验。我们提供功能强大且可自定义的 UI 屏幕和元素,开箱即可用于收集用户的支付详细信息。

stripe-flutter_cover

功能

简化安全性:我们使您能够轻松收集信用卡号等敏感数据,并保持 PCI 合规性。这意味着敏感数据直接发送到 Stripe,而不是通过您的服务器。有关更多信息,请参阅我们的 集成安全指南

Apple Pay:我们提供与 Apple Pay 的无缝集成

Google Pay:该插件可以轻松地充当 Pay 插件的支付提供商,使您能够无缝集成 Google Pay 或 Apple Pay。您需要做的就是将您的 Stripe 可发布密钥添加到支付配置文件中。

支付方式:接受更多 支付方式有助于您的业务扩展全球业务范围并提高结账转化率。

SCA 就绪:SDK 会在需要时自动执行原生的 3D 安全身份验证,以符合欧洲的 强客户身份验证法规。

原生 UI:我们提供原生的屏幕和元素,可在 Android 和 iOS 上安全地收集支付详细信息。

预建支付 UI:了解如何集成 Payment Sheet,这是面向移动应用的新预建支付 UI。此预建 UI 可让您开箱即用地接受卡片、Apple Pay 和 Google Pay,并支持保存和重复使用卡片。

推荐用法

如果您在应用内销售数字产品或服务(例如订阅、游戏内货币、游戏关卡、访问高级内容或解锁完整版本),则必须使用应用商店的应用内购买 API。有关更多信息,请参阅 AppleGoogle 的指南。对于所有其他场景,您可以使用此 SDK 通过 Stripe 处理付款。

安装

dart pub add flutter_stripe

要求

Android

  • Android 5.0 (API 级别 21) 及更高版本
  • Kotlin 版本 1.5.0 及更高版本:示例
  • 使用 Theme.AppCompact 的后代作为您的 Activity:示例示例夜间主题
  • 使用最新版本的 Android Gradle 构建工具:示例,并相应地使用最新版本的 Gradle:示例
  • MainActivity.kt 中使用 FlutterFragmentActivity 而不是 FlutterActivity示例

这是因为 Stripe SDK 要求使用 AppCompact 主题作为其 UI 组件,并使用 Support Fragment Manager 进行 Payment Sheets

iOS

兼容以 iOS 11 或更高版本为目标的应用。

用法示例

// main.dart
import 'package:flutter_stripe/flutter_stripe.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // set the publishable key for Stripe - this is mandatory
  Stripe.publishableKey = stripePublishableKey;
  runApp(PaymentScreen());
}

// payment_screen.dart
class PaymentScreen extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Column(
        children: [
          CardField(
            onCardChanged: (card) {
              print(card);
            },
          ),
          TextButton(
            onPressed: () async {
              // create payment method
              final paymentMethod =
                  await Stripe.instance.createPaymentMethod(PaymentMethodParams.card());
            },
            child: Text('pay'),
          )
        ],
      ),
    );
  }
}

Stripe 初始化

要在您的 Flutter 应用中初始化 Stripe,请使用 Stripe 基类。

Stripe 提供 publishableKeystripeAccountIdthreeDSecureParamsmerchantIdentifier。只有 publishableKey 是必需的。

Dart API

该库提供了几种处理与Stripe相关的操作的方法。

Future<PaymentMethod> createPaymentMethod(...);
Future<PaymentIntent> handleCardAction(...);
Future<PaymentIntent> confirmPaymentMethod(...);
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()

示例应用提供了有关如何使用这些方法的示例。

Pay 插件支持

flutter_stripe 完全支持 Google Pay 团队的 Pay 插件。通过添加几行代码,您可以将 Stripe 集成作为 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.confirmPaymentMethod(
      clientSecret,
      params,
    );
}

运行示例应用

  • 导航到示例文件夹 cd example
  • 安装依赖项
    • flutter pub get
  • 为 flutter 应用和本地后端设置环境变量。
    • 获取您的测试 Stripe API 密钥
    • cp lib/.env.example.dart lib/.env.dart 并设置您的 Stripe 可发布密钥。
    • cp server/.env.example server/.env 并在您新创建的 .env 文件中设置变量值。
  • 安装服务器依赖项:yarn --cwd "server"
  • 启动示例
    • 终端 1:yarn --cwd "server" start
    • 终端 2:flutter run
Webhook 转发的附加步骤

已知问题

  • Android 上的 Card 字段在旧版 Flutter 中存在焦点问题 – 该问题已在 Flutter 框架的
    master 分支中修复。该问题正在 #14 #14 中跟踪。

贡献

您可以帮助我们改进这个项目,欢迎提出新的问题或提交拉取请求。

设置

本项目使用 melos 来管理此仓库内的所有软件包。

  • 安装 melos:dart pub global activate melos
  • 在您的本地文件夹中设置 melos:melos bootstrap
常用命令
  • 格式化 melos run format
  • 分析 melos run analyze
  • 测试 melos run test
  • Pub get melos run get
发布
  • 使用 melos versionmelos publish 来保持所有仓库的同步

GitHub

https://github.com/flutter-stripe/flutter_stripe