Flutter银行账户验证插件nordigen_integration的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter银行账户验证插件nordigen_integration的使用

nordigen_integration 是一个用于集成 Nordigen EU PSD2 AISP 银行 API 的 Dart/Flutter 包。本文将详细介绍如何在 Flutter 项目中使用该插件进行银行账户验证。

内容

Usage Steps

Example Usage

以下是一个完整的示例,展示了如何使用 nordigen_integration 插件来实现银行账户验证:

import 'package:nordigen_integration/nordigen_integration.dart';

Future<void> main() async {
  /// Step 1: 初始化 NordigenAccountInfoAPI 对象
  final NordigenAccountInfoAPI apiInterface =
      await NordigenAccountInfoAPI.fromSecret(
    secretID: 'your_secret_id', // 替换为你的 Secret ID
    secretKey: 'your_secret_key', // 替换为你的 Secret Key
  );

  /// Step 2: 获取国家内的银行列表,并选择第一个银行
  final Institution firstBank =
      (await apiInterface.getInstitutionsForCountry(countryCode: 'gb')).first;

  /// Step 3: 创建用户协议
  final EndUserAgreementModel endUserAgreementModel =
      await apiInterface.createEndUserAgreement(
    maxHistoricalDays: 90,
    accessValidForDays: 90,
    institutionID: firstBank.id,
  );

  /// Step 4: 创建请求并生成链接
  final RequisitionModel requisition =
      await apiInterface.createRequisitionAndBuildLink(
    agreement: endUserAgreementModel.id,
    institutionID: firstBank.id,
    redirect: 'http://www.yourwebpage.com/', // 替换为你自己的重定向 URL
    reference: 'exampleRef42069666',
  );

  /// 打印验证链接
  print('Validate: ${requisition.link}');
}

使用步骤详解

  1. 初始化 NordigenAccountInfoAPI 对象: 使用 fromSecret 方法初始化 API 接口对象,传入你的 secretIDsecretKey

    final NordigenAccountInfoAPI apiInterface =
        await NordigenAccountInfoAPI.fromSecret(
      secretID: 'your_secret_id',
      secretKey: 'your_secret_key',
    );
    
  2. 获取国家内的银行列表: 调用 getInstitutionsForCountry 方法获取指定国家(如英国 'gb')内的银行列表,并选择第一个银行。

    final Institution firstBank =
        (await apiInterface.getInstitutionsForCountry(countryCode: 'gb')).first;
    
  3. 创建用户协议: 使用 createEndUserAgreement 方法创建用户协议,设置访问天数和历史交易天数。

    final EndUserAgreementModel endUserAgreementModel =
        await apiInterface.createEndUserAgreement(
      maxHistoricalDays: 90,
      accessValidForDays: 90,
      institutionID: firstBank.id,
    );
    
  4. 创建请求并生成链接: 使用 createRequisitionAndBuildLink 方法创建请求并生成验证链接。

    final RequisitionModel requisition =
        await apiInterface.createRequisitionAndBuildLink(
      agreement: endUserAgreementModel.id,
      institutionID: firstBank.id,
      redirect: 'http://www.yourwebpage.com/',
      reference: 'exampleRef42069666',
    );
    
  5. 打开验证链接: 最后,打印或处理生成的验证链接。

    print('Validate: ${requisition.link}');
    

API Documentation

Available Methods

以下是 NordigenAccountInfoAPI 类提供的主要方法:

  • NordigenAccountInfoAPI({required String accessToken}): 使用访问令牌初始化 API 接口。
  • static Future<NordigenAccountInfoAPI> fromSecret({required String secretID, required String secretKey}): 使用密钥生成接口。
  • static Future<Map<String, dynamic>> createAccessToken({required String secretID, required String secretKey}): 使用密钥生成访问令牌。
  • getInstitutionsForCountry({required String countryCode}): 获取指定国家的银行列表。
  • createEndUserAgreement({required String institutionID, int maxHistoricalDays = 90, int accessValidForDays = 90, List<String> accessScope = const <String>['balances', 'details', 'transactions']}): 创建用户协议。
  • acceptEndUserAgreement({required String endUserAgreementID, required String ipAddress, required String userAgent}): 接受用户协议。
  • createRequisitionAndBuildLink({required String redirect, required String institutionID, String? agreement, required String reference, String? userLanguage}): 创建请求并生成链接。

Available Data Classes

插件提供了多个数据类用于存储和处理从 API 返回的数据,包括 Institution, EndUserAgreementModel, RequisitionModel 等等。

Contributing

如果你想贡献代码,请查看 Contribution Guidelines

Dependencies

  • Dart SDK
  • http package 用于处理 API 请求

Tests Screenshot

Nordigen Integration Tests Successful

Vote of Thanks

感谢所有贡献者和支持者,特别是 Cashtic 公司对项目的赞助。

General Information

该项目是一个 Dart 包的起点,可以轻松共享到多个 Flutter 或 Dart 项目中。更多关于 Flutter 开发的帮助,请参阅 Flutter 文档

希望这个指南能帮助你在 Flutter 项目中成功集成 Nordigen API!如果有任何问题或建议,请随时联系开发者或提交 issue。


更多关于Flutter银行账户验证插件nordigen_integration的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter银行账户验证插件nordigen_integration的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter应用中使用nordigen_integration插件来进行银行账户验证的示例代码。这个插件允许你集成Nordigen的API,以便在你的应用中实现银行账户验证功能。

首先,确保你已经在pubspec.yaml文件中添加了nordigen_integration依赖:

dependencies:
  flutter:
    sdk: flutter
  nordigen_integration: ^最新版本号  # 请替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中,你可以按照以下步骤配置和使用nordigen_integration插件:

  1. 初始化插件

在你的主文件(通常是main.dart)或者一个合适的初始化位置,配置Nordigen的API密钥和其他必要的设置。

import 'package:flutter/material.dart';
import 'package:nordigen_integration/nordigen_integration.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化Nordigen插件
  Nordigen.instance.configure(
    apiKey: '你的Nordigen API密钥',
    sandbox: true,  // 如果是沙盒环境,设置为true;生产环境设置为false
  );

  runApp(MyApp());
}
  1. 创建银行账户验证页面

创建一个新的页面或组件来处理银行账户验证流程。

import 'package:flutter/material.dart';
import 'package:nordigen_integration/nordigen_integration.dart';

class BankAccountVerificationPage extends StatefulWidget {
  @override
  _BankAccountVerificationPageState createState() => _BankAccountVerificationPageState();
}

class _BankAccountVerificationPageState extends State<BankAccountVerificationPage> {
  String _institutionName = '';
  String _bic = '';
  String _iban = '';
  String _accountHolderName = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('银行账户验证'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('请扫描或手动输入您的银行信息'),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                // 打开Nordigen的银行选择界面
                final result = await Nordigen.instance.startInstitutionSelection(
                  context,
                  onSuccess: (institution) {
                    setState(() {
                      _institutionName = institution.name;
                      _bic = institution.bic;
                      _iban = institution.iban ?? '';
                      _accountHolderName = institution.accountHolderName ?? '';
                    });
                    // 在这里你可以处理获取到的银行信息,比如发送到服务器进行进一步验证
                  },
                  onError: (error) {
                    // 处理错误
                    print('Error: $error');
                  },
                );

                if (result == null || !result) {
                  // 用户取消了操作
                  print('User cancelled the operation.');
                }
              },
              child: Text('选择银行'),
            ),
            SizedBox(height: 20),
            if (_institutionName.isNotEmpty)
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Text('银行名称: $_institutionName'),
                  Text('BIC: $_bic'),
                  Text('IBAN: $_iban'),
                  Text('账户持有人姓名: $_accountHolderName'),
                ],
              ),
          ],
        ),
      ),
    );
  }
}
  1. 导航到验证页面

在你的主应用逻辑中,添加导航到银行账户验证页面的代码。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Demo Home Page'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => BankAccountVerificationPage()),
              );
            },
            child: Text('验证银行账户'),
          ),
        ),
      ),
    );
  }
}

这个示例展示了如何使用nordigen_integration插件在Flutter应用中启动银行选择界面,并处理用户选择的银行信息。请注意,你需要替换你的Nordigen API密钥为你在Nordigen平台上获得的实际API密钥,并根据你的应用需求进一步处理获取到的银行信息。

回到顶部