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

1 回复

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

  1. android/app/build.gradle 文件中,确保 minSdkVersion 至少为 21
defaultConfig {
    applicationId "com.example.app"
    minSdkVersion 21
    targetSdkVersion 30
    versionCode 1
    versionName "1.0"
}
  1. AndroidManifest.xml 文件中,添加以下权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />

iOS

  1. Info.plist 文件中,添加以下权限:
<key>NSCameraUsageDescription</key>
<string>We need access to the camera to scan your credit card.</string>
  1. 如果你使用 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'),
      ],
    );
  }
}
回到顶部