Flutter身份验证插件flutter_pipwave_ekyc的使用
Flutter身份验证插件flutter_pipwave_ekyc的使用
简介
Pipwave eKYC SDK 提供了一个预设计的图形用户界面(GUI),用于进行电子身份验证(eKYC)过程。在过程中,用户可能需要提交他们的身份证、驾驶执照、护照和自拍照,以及信用卡或账单等信息。
Pipwave eKYC SDK 为您创建最佳的身份验证体验提供了许多好处:
- 预设计的用户界面帮助用户从头到尾完成身份证和自拍照的eKYC过程。
- 可以轻松地与您的Flutter应用程序集成。
- 图像将安全地上载到Pipwave服务,从而简化了集成过程。
功能
身份验证
验证政府签发的身份证明文件,如护照、驾驶执照和州身份证。
信用卡验证
验证信用卡信息,以防止欺诈性交易。
地址证明验证
通过各种文档类型确认个人地址,包括公用事业账单、银行对账单和租赁协议。
安装
导入包
dependencies:
flutter_pipwave_ekyc: 1.0.0
前提条件
添加相机和图库权限
iOS
- 向
Info.plist
添加以下行:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> ... <key>NSCameraUsageDescription</key> <string>We need access to your camera to capture photos and videos.</string> <key>NSPhotoLibraryUsageDescription</key> <string>Access to your media gallery is required to share your photos or videos to the mobile app.</string> ... </dict> </plist>
- 向
Podfile
添加以下行:post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ '$(inherited)', ## dart: PermissionGroup.camera 'PERMISSION_CAMERA=1', ## dart: PermissionGroup.photos 'PERMISSION_PHOTOS=1', ] end end end
Android
- 向
AndroidManifest.xml
添加以下行:<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.CAMERA" /> <application android:requestLegacyExternalStorage="true" ...> ... </application> </manifest>
添加本地化
iOS
- 向
Info.plist
添加以下行:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> ... <key>CFBundleLocalizations</key> <array> <string>en</string> </array> ... </dict> </plist>
Android
无需更改。
启动SDK
初始化SDK
FlutterPipwaveEkyc.instance.launch(
context,
accessToken: '{{ACCESS_TOKEN}}',
onSuccess: () {},
onError: (error) {},
);
accessToken
: 用户需要进行eKYC过程的令牌。onSuccess
: 当eKYC过程完成后触发的回调。onError
: 当eKYC过程失败时触发的回调(参考下表识别错误类型)。
错误/异常类型
错误/异常 | 描述 |
---|---|
sessionIsInitialised | 另一个会话已初始化。 |
invalidAccessToken | 访问令牌不是有效的JWT格式。 |
sessionExpired | 会话已过期。 |
invalidSession | 会话ID缺失。 |
invalidVerificationTypes | 包含不支持的验证类型。 |
submissionExceedLimit | 该会话的提交已超过最大限制。 |
submissionFailed | 在eKYC过程中提交失败。包含code 和requestId 用于调试。 |
closed | eKYC屏幕已关闭。 |
unknown | 在eKYC过程中发生未知错误。 |
示例代码
import 'package:flutter/material.dart';
import 'package:flutter_pipwave_ekyc/flutter_pipwave_ekyc.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(
const MaterialApp(
home: MainApp(),
),
);
}
class MainApp extends StatefulWidget {
const MainApp({super.key});
[@override](/user/override)
State<MainApp> createState() => _MainAppState();
}
class _MainAppState extends State<MainApp> {
final _accessTokenTextEditingController = TextEditingController();
final _logs = <String>[];
[@override](/user/override)
void dispose() {
_accessTokenTextEditingController.dispose();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Padding(
padding: const EdgeInsets.all(24),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(
'欢迎来到Pipwave演示。',
style: Theme.of(context)
.textTheme
.headlineMedium
?.copyWith(fontWeight: FontWeight.w600),
textAlign: TextAlign.center,
),
const SizedBox(height: 16),
Text(
'请输入您的eKYC访问令牌继续。',
style: Theme.of(context)
.textTheme
.titleMedium
?.copyWith(fontWeight: FontWeight.w600),
textAlign: TextAlign.center,
),
const SizedBox(height: 16),
TextField(
autofocus: true,
controller: _accessTokenTextEditingController,
decoration: const InputDecoration(
labelText: '访问令牌',
hintText: '输入您的访问令牌',
border: OutlineInputBorder(),
),
onChanged: (_) => setState(() {}),
),
const SizedBox(height: 32),
ElevatedButton(
onPressed:
_isButtonEnabled ? () => _launchEkycSdk(context) : null,
child: const Text('继续'),
),
if (_logs.isNotEmpty) ...[
const SizedBox(height: 32),
Text(
'日志',
style: Theme.of(context)
.textTheme
.headlineSmall
?.copyWith(fontWeight: FontWeight.w600),
),
const SizedBox(height: 16),
Expanded(
child: ListView.separated(
itemBuilder: (context, index) {
return Text(_logs[index]);
},
separatorBuilder: (_, __) => const Divider(),
itemCount: _logs.length,
),
),
],
],
),
),
);
}
String get _accessTokenText => _accessTokenTextEditingController.text.trim();
bool get _isButtonEnabled => _accessTokenText.isNotEmpty;
Future<void> _launchEkycSdk(BuildContext context) async {
final accessToken = _accessTokenText.replaceAll('\n', '');
await FlutterPipwaveEkyc.instance.launch(
context,
accessToken: accessToken,
onSuccess: () => _addLog('eKYC成功'),
onError: (error) => _addLog(error.toString()),
);
}
void _addLog(String log) {
if (!mounted) {
return;
}
// ignore: parameter_assignments
log = '${DateTime.now()}: $log';
setState(() => _logs.add(log));
}
}
更多关于Flutter身份验证插件flutter_pipwave_ekyc的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter身份验证插件flutter_pipwave_ekyc的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_pipwave_ekyc
是一个用于在 Flutter 应用中集成 Pipwave 的电子身份验证(eKYC)功能的插件。它允许开发者轻松地将身份验证流程集成到他们的应用程序中。以下是如何使用 flutter_pipwave_ekyc
插件的基本步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 flutter_pipwave_ekyc
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_pipwave_ekyc: ^1.0.0 # 请使用最新版本
然后,运行 flutter pub get
来安装依赖。
2. 导入插件
在需要使用 flutter_pipwave_ekyc
的 Dart 文件中导入插件:
import 'package:flutter_pipwave_ekyc/flutter_pipwave_ekyc.dart';
3. 初始化插件
在使用插件之前,通常需要初始化它。你可以在 main.dart
或应用程序的入口点进行初始化:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Pipwave eKYC 插件
await PipwaveEkyc.initialize(
apiKey: 'YOUR_API_KEY',
environment: Environment.sandbox, // 或者 Environment.production
);
runApp(MyApp());
}
apiKey
是你从 Pipwave 获取的 API 密钥。environment
可以是 Environment.sandbox
(用于测试)或 Environment.production
(用于生产环境)。
4. 启动身份验证流程
在你的应用中,你可以通过调用 PipwaveEkyc.startVerification
方法来启动身份验证流程。这个方法通常在一个按钮的 onPressed
回调中调用:
ElevatedButton(
onPressed: () async {
try {
final verificationResult = await PipwaveEkyc.startVerification(
userData: {
'userId': 'USER_ID', // 用户的唯一标识
'countryCode': 'MY', // 用户的国家代码
// 其他必要的用户数据
},
);
// 处理验证结果
if (verificationResult['status'] == 'success') {
print('Verification successful: ${verificationResult['message']}');
} else {
print('Verification failed: ${verificationResult['message']}');
}
} catch (e) {
print('Error during verification: $e');
}
},
child: Text('Start Verification'),
)