Flutter支付集成插件flutter_adyen_dropin_plugin的使用
Flutter支付集成插件flutter_adyen_dropin_plugin的使用
注意: 此库不是Adyen官方提供的。
Flutter插件用于与Adyen的Android和iOS库集成。此库使您可以仅通过调用一个函数来打开Adyen的Drop-in方法。
该插件支持3D Secure v2和一次性支付。它未在循环支付场景中进行测试。
前提条件
凭证
您需要拥有以下信息:
- 客户密钥(来自Adyen)
- 金额和货币
- 会话数据(例如用户ID)
- Adyen环境(测试、LIVE_EUROPE等)
- 国家代码(de-DE,en-US等)
- 会话信息(请求后所有响应使用
/sessions
) - 会话数据(请求
/sessions
后可以获取)
设置
Android
在您的应用程序的MainActivity.java中,扩展FlutterFragmentActivity并在onCreate方法中添加以下行,这允许Adyen获取您的应用的Activity。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AdyenSetup.setActivity(this);
AdyenSetup.setLauncherActivity(this);
}
Build Gradle
您需要设置minSdkVersion和targetSdkVersion,compileSdkVersion(由最新的Adyen所需)。
android {
...
compileSdkVersion 34
defaultConfig {
...
minSdkVersion 24
targetSdkVersion 34
}
}
iOS
如果还没有,请添加URL_SCHEME。
目标
您需要将应用目标更改为iOS 13或更高版本(由最新的Adyen所需)。
Flutter实现
要开始付款,您需要像这样调用插件:
String dropInStatus = '';
try {
dropInStatus = await FlutterAdyenDropIn.openDropIn(
sessionData: "<YOUR-SESSION-DATA>",
clientKey: "<YOUR-CLIENT-KEY>",
currency: "USD",
value: 1000,
sessionId: "<YOUR-SESSION-ID>",
countryCode: "en-US",
sessionInfo: {"FIELD": "<YOUR-SESSION-INFO>"},
);
} catch (e) {
print(e);
}
支付状态
您可以收到的所有支付状态。更多详细信息,请参阅这里
PAYMENT_CANCELED (当您关闭弹出窗口时)
授权
取消
错误
拒绝
示例代码
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_adyen_dropin_plugin/flutter_adyen_dropin_plugin.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Center(
child: CupertinoButton(
child: const Text("Drop In"),
onPressed: () async {
String dropInStatus = '';
try {
dropInStatus = await FlutterAdyenDropIn.openDropIn(
sessionData: "<YOUR-SESSION-DATA>",
clientKey: "<YOUR-CLIENT-KEY>",
currency: "USD",
value: 1000,
sessionId: "<YOUR-SESSION-ID>",
countryCode: "en-US",
sessionInfo: {"FIELD": "<YOUR-SESSION-INFO>"},
);
} catch (e) {
print(e);
}
print(dropInStatus);
}),
),
),
);
}
}
更多关于Flutter支付集成插件flutter_adyen_dropin_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件flutter_adyen_dropin_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter应用中集成并使用flutter_adyen_dropin_plugin
插件的示例代码。这个插件用于集成Adyen支付网关。
首先,确保你已经在pubspec.yaml
文件中添加了flutter_adyen_dropin_plugin
依赖:
dependencies:
flutter:
sdk: flutter
flutter_adyen_dropin_plugin: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来,按照以下步骤在你的Flutter应用中集成Adyen支付:
-
配置Android和iOS环境: 确保在Android和iOS项目中配置了必要的支付环境,包括设置API密钥、证书等。这部分配置通常需要在原生Android和iOS项目中完成,具体步骤可以参考Adyen官方文档。
-
创建支付界面:
在你的Flutter应用中,创建一个用于显示支付界面的Widget。下面是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:flutter_adyen_dropin_plugin/flutter_adyen_dropin_plugin.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Adyen Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final AdyenDropInController _adyenController = AdyenDropInController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Adyen Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 配置支付参数
final configuration = AdyenDropInConfiguration(
environment: AdyenEnvironment.test, // 或 AdyenEnvironment.production
clientKey: 'YOUR_CLIENT_KEY', // 替换为你的Adyen客户端密钥
publicKey: 'YOUR_PUBLIC_KEY', // 替换为你的Adyen公钥
serverUrl: 'YOUR_SERVER_URL', // 替换为你的后端服务器URL,用于处理支付请求
paymentMethodsResponse: null, // 可以从后端获取预填充的支付方式列表
merchantAccount: 'YOUR_MERCHANT_ACCOUNT', // 替换为你的Adyen商户账户
);
// 启动Adyen支付界面
final result = await _adyenController.startPayment(
context: context,
configuration: configuration,
);
if (result != null) {
// 处理支付结果
print('Payment result: ${result.toJson()}');
// 通常,你需要将result发送到你的后端服务器进行进一步处理
}
},
child: Text('Start Payment'),
),
),
);
}
@override
void dispose() {
_adyenController.dispose();
super.dispose();
}
}
在上面的代码中,我们创建了一个简单的Flutter应用,其中包含一个按钮用于启动Adyen支付界面。你需要替换YOUR_CLIENT_KEY
、YOUR_PUBLIC_KEY
、YOUR_SERVER_URL
和YOUR_MERCHANT_ACCOUNT
为你的实际Adyen配置信息。
-
处理支付结果:
支付完成后,
startPayment
方法会返回一个AdyenDropInResult
对象,其中包含支付结果。通常,你需要将这个结果发送到你的后端服务器进行进一步处理(例如,验证支付结果、处理退款等)。 -
错误处理:
在实际应用中,你可能还需要添加错误处理逻辑,以处理支付过程中可能出现的各种错误情况。
这个示例展示了如何在Flutter应用中集成并使用flutter_adyen_dropin_plugin
插件进行支付。根据实际需求,你可能还需要进一步定制和扩展这个示例。