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

1 回复

更多关于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支付:

  1. 配置Android和iOS环境: 确保在Android和iOS项目中配置了必要的支付环境,包括设置API密钥、证书等。这部分配置通常需要在原生Android和iOS项目中完成,具体步骤可以参考Adyen官方文档。

  2. 创建支付界面

    在你的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_KEYYOUR_PUBLIC_KEYYOUR_SERVER_URLYOUR_MERCHANT_ACCOUNT为你的实际Adyen配置信息。

  1. 处理支付结果

    支付完成后,startPayment方法会返回一个AdyenDropInResult对象,其中包含支付结果。通常,你需要将这个结果发送到你的后端服务器进行进一步处理(例如,验证支付结果、处理退款等)。

  2. 错误处理

    在实际应用中,你可能还需要添加错误处理逻辑,以处理支付过程中可能出现的各种错误情况。

这个示例展示了如何在Flutter应用中集成并使用flutter_adyen_dropin_plugin插件进行支付。根据实际需求,你可能还需要进一步定制和扩展这个示例。

回到顶部