Flutter信用卡扫描插件core_card_io_sdk的使用
Flutter信用卡扫描插件core_card_io_sdk的使用
core_card_io
是一个用于 Flutter 的信用卡扫描插件,支持 iOS 和 Android 平台。它通过调用 CardIO 库来实现通过摄像头扫描信用卡的功能。CardIO 提供了强大的信用卡信息提取能力,包括卡号、有效期、CVV 等。
安装
首先,在您的 pubspec.yaml
文件中添加 core_card_io
作为依赖项。
iOS
在 Info.plist
文件中添加以下键值对:
<key>NSCameraUsageDescription</key>
<string>为了扫描信用卡,我们需要访问您的相机。</string>
然后运行以下命令以安装依赖:
pod install
Android
在 AndroidManifest.xml
文件中添加相机权限:
<uses-permission android:name="android.permission.CAMERA"/>
同时,确保在应用中添加 CardIO 的开源许可信息。
示例代码
以下是一个完整的示例代码,展示了如何使用 core_card_io_sdk
插件进行信用卡扫描。
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:core_card_io_sdk/core_card_io_sdk.dart'; // 导入插件
void main() => runApp(MyApp()); // 启动应用
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState(); // 初始化状态
}
class _MyAppState extends State<MyApp> {
String _platformVersion = '未知平台'; // 当前平台版本
@override
void initState() {
super.initState();
initPlatformState(); // 初始化插件状态
}
// 异步初始化插件状态
Future<void> initPlatformState() async {
String platformVersion = "";
Map<String, dynamic> details;
try {
// 调用 scanCard 方法进行信用卡扫描
details = await CoreCardIo.scanCard({
"hideCardIOLogo": true, // 隐藏 CardIO logo
"requireExpiry": true, // 必须输入有效期
"scanExpiry": true, // 扫描有效期
"requireCVV": true, // 必须输入 CVV
"requireCardHolderName": true // 必须输入持卡人姓名
});
print(details); // 打印扫描结果
} on PlatformException {
platformVersion = '无法获取平台版本。';
}
// 如果组件已从树中移除,则不更新状态
if (!mounted) return;
setState(() {
_platformVersion = platformVersion; // 更新平台版本
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例'), // 设置标题
),
body: Center(
child: Text('运行在: $_platformVersion\n'), // 显示运行环境
),
),
);
}
}
响应示例
以下是成功扫描信用卡后返回的结果示例:
{
"cardholderName": "John Doe", // 持卡人姓名
"cardNumber": "1234 5678 9876 1236", // 卡号
"redactedCardNumber": "**** **** **** 1236", // 隐去部分卡号
"expiryMonth": 12, // 有效期月份
"expiryYear": 2022, // 有效期年份
"cvv": 123, // CVV
"postalCode": "93748" // 邮政编码
}
更多关于Flutter信用卡扫描插件core_card_io_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter信用卡扫描插件core_card_io_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
core_card_io_sdk
是一个用于 Flutter 的信用卡扫描插件,它允许开发者通过设备的摄像头扫描信用卡,并提取信用卡的相关信息(如卡号、有效期、持卡人姓名等)。该插件基于 Card.IO
SDK,提供了简单易用的 API。
安装
首先,你需要在 pubspec.yaml
文件中添加 core_card_io_sdk
依赖:
dependencies:
flutter:
sdk: flutter
core_card_io_sdk: ^1.0.0 # 请使用最新版本
然后,运行 flutter pub get
来安装依赖。
配置
Android
- 在
android/app/build.gradle
文件中,确保minSdkVersion
至少为21
:
defaultConfig {
applicationId "com.example.app"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
- 在
AndroidManifest.xml
文件中,添加以下权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
iOS
- 在
Info.plist
文件中,添加以下权限:
<key>NSCameraUsageDescription</key>
<string>We need access to the camera to scan your credit card.</string>
- 如果你使用
CocoaPods
,确保在ios/Podfile
中包含以下内容:
platform :ios, '11.0'
use_frameworks!
然后运行 pod install
。
使用
以下是一个简单的示例,展示如何使用 core_card_io_sdk
扫描信用卡并获取相关信息:
import 'package:flutter/material.dart';
import 'package:core_card_io_sdk/core_card_io_sdk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Card.IO Example'),
),
body: Center(
child: CardIOExample(),
),
),
);
}
}
class CardIOExample extends StatefulWidget {
[@override](/user/override)
_CardIOExampleState createState() => _CardIOExampleState();
}
class _CardIOExampleState extends State<CardIOExample> {
String _cardNumber = '';
String _expiryMonth = '';
String _expiryYear = '';
String _cardHolderName = '';
Future<void> _scanCard() async {
try {
CardIOResult result = await CoreCardIOSdk.scanCard(
scanInstructions: 'Please align the card within the frame',
hideCardIOLogo: true,
suppressManualEntry: true,
suppressConfirmation: true,
);
setState(() {
_cardNumber = result.cardNumber;
_expiryMonth = result.expiryMonth;
_expiryYear = result.expiryYear;
_cardHolderName = result.cardHolderName;
});
} catch (e) {
print('Error scanning card: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _scanCard,
child: Text('Scan Card'),
),
SizedBox(height: 20),
Text('Card Number: $_cardNumber'),
Text('Expiry Month: $_expiryMonth'),
Text('Expiry Year: $_expiryYear'),
Text('Card Holder Name: $_cardHolderName'),
],
);
}
}