Flutter Stripe
? flutter_stripe 处于测试阶段 – 如果您发现问题,请提供反馈(和/或贡献)?️
Stripe Flutter SDK 允许您使用 Flutter 在原生 Android 和 iOS 应用中构建令人愉悦的支付体验。我们提供强大且可定制的 UI 屏幕和元素,这些屏幕和元素可开箱即用地用于收集用户的支付详细信息。
功能
简化安全性:我们使您能够轻松收集信用卡号等敏感数据,并保持 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。有关更多信息,请参阅 Apple 和 Google 的指南。对于所有其他场景,您可以使用此 SDK 通过 Stripe 处理付款。
安装
dart pub add flutter_stripe
要求
Android
- Android 5.0 (API 级别 21) 及更高版本
- Kotlin 版本 1.5.0 及更高版本:示例
- 为您的 Activity 使用
Theme.AppCompact的后代:示例,示例夜间主题 - 使用最新的 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 提供 publishableKey、stripeAccountId、threeDSecureParams 和 merchantIdentifier。只需要 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
- 终端 1:
Webhook 转发的附加步骤
- 安装
stripe-cli - 运行
stripe listen --forward-to localhost:4242/webhook
已知问题
- 旧版 Flutter 版本上的 Android 卡片字段存在焦点问题 – 此问题已在 Flutter 的 master 分支中修复。问题正在 #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 version和melos publish来保持所有仓库的同步。
