iOS - Card Identification 银行卡号识别

简介: 1、CardIO 识别框架 GitHub 下载地址配置1、把框架整个拉进自己的工程,然后在 TARGETS => Build Phases => Link Binary With Libraries 里边分别加入下面这几个框架。

1、CardIO 识别

  • 框架 GitHub 下载地址

  • 配置

    • 1、把框架整个拉进自己的工程,然后在 TARGETS => Build Phases => Link Binary With Libraries 里边分别加入下面这几个框架。

          Accelerate.framework
          MobileCoreServices.framework
          CoreMedia.framework
          AudioToolbox.framework
          AVFoundation.framework

      cardid1

    • 2、在TARGETS => Build Settings => Other Linker Flags 中添加 -ObjC 和 -lc++ 。

      cardid2

    • 3、在 iOS8 + 系统中使用相机需要在 Info.plist 中添加 Privacy - Camera Usage Description,并设置其值。

      cardid3

    • 4、在我们需要调用的文件中导入

          // 导入头文件
          #import "CardIO.h"
          #import "CardIOPaymentViewControllerDelegate.h
      
          // 遵守协议
          <CardIOPaymentViewControllerDelegate>
  • 开始扫描银行卡

        [CardIOUtilities preload];
    
        CardIOPaymentViewController *scanViewController = [[CardIOPaymentViewController alloc] initWithPaymentDelegate:self];
    
        [self presentViewController:scanViewController animated:YES completion:nil];
  • 取消扫描

        // CardIOPaymentViewControllerDelegate 协议方法
        - (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)paymentViewController {
    
            [[[UIAlertView alloc] initWithTitle:@"User cancelled sca" 
                                        message:nil  
                                       delegate:nil 
                              cancelButtonTitle:@"确定" otherButtonTitles:nil, nil] show];
    
            [self dismissViewControllerAnimated:YES completion:nil];
        }
  • 扫描完成

        // CardIOPaymentViewControllerDelegate 协议方法
        - (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)cardInfo inPaymentViewController:(CardIOPaymentViewController *)paymentViewController {
    
            // 获取扫描结果
    
            // cardNumber 是扫描的银行卡号,显示的是完整号码,而 redactedCardNumber 只显示银行卡后四位,前面的用 * 代替了,返回的银行卡号都没有空格
    
            NSString *redactedCardNumber = cardInfo.cardNumber;     // 卡号
            NSUInteger expiryMonth = cardInfo.expiryMonth;          // 月
            NSUInteger expiryYear = cardInfo.expiryYear;            // 年
            NSString *cvv = cardInfo.cvv;                           // CVV 码
    
            // 显示扫描结果
            NSString *msg = [NSString stringWithFormat:@"Number: %@\n\n expiry: %02lu/%lu\n\n cvv: %@", [self dealCardNumber:redactedCardNumber], expiryMonth, expiryYear, cvv];
            [[[UIAlertView alloc] initWithTitle:@"Received card info" message:msg  delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil] show];
    
            [self dismissViewControllerAnimated:YES completion:nil];
        }
        // 对银行卡号进行每隔四位加空格处理,自定义方法
        - (NSString *)dealCardNumber:(NSString *)cardNumber {
    
            NSString *strTem = [cardNumber stringByReplacingOccurrencesOfString:@" " withString:@""];
            NSString *strTem2 = @"";
    
            if (strTem.length % 4 == 0) {
    
                NSUInteger count = strTem.length / 4;
                for (int i = 0; i < count; i++) {
                    NSString *str = [strTem substringWithRange:NSMakeRange(i * 4, 4)];
                    strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];
                }
    
            } else {
    
                NSUInteger count = strTem.length / 4;
                for (int j = 0; j <= count; j++) {
    
                    if (j == count) {
                        NSString *str = [strTem substringWithRange:NSMakeRange(j * 4, strTem.length % 4)];
                        strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];
                    } else {
                        NSString *str = [strTem substringWithRange:NSMakeRange(j * 4, 4)];
                        strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];
                    }
                }
            }
    
            return strTem2;
        }
  • 效果

    cardid4cardid5

目录
相关文章
|
算法 API iOS开发
iOS MachineLearning 系列(3)—— 静态图像分析之区域识别
本系列的前一篇文章介绍了如何使用iOS中自带的API对图片中的矩形区域进行分析。在图像静态分析方面,矩形区域分析是非常基础的部分。API还提供了更多面向应用的分析能力,如文本区域分析,条形码二维码的分析,人脸区域分析,人体分析等。本篇文章主要介绍这些分析API的应用。
286 0
|
机器学习/深度学习 API iOS开发
iOS MachineLearning 系列(17)—— 几个常用的对象识别 CoreML 模型
上一篇文章中,我们介绍了几个官方的图片分类的模型,图片分类模型的应用场景在于将图片中最主要的事物进行识别,在已有的词库中找到最可能得事物。而对象识别则要更高级一些。再之前的文章,我们介绍过可以使用官方提供的API来进行矩形识别,文本识别,二维码识别以及人脸识别等,这类识别功能的特点是我们不仅可以将图片中的物体位置和尺寸分析出来,还可以对其进行类别的分类。
349 0
|
自然语言处理 iOS开发 开发者
iOS MachineLearning 系列(11)—— 自然语言识别与文本分析
在上一篇文章中,我们介绍了使用NaturalLanguage框架来进行自然语言的拆解,可以将一段文本按照单词,句子或段落的模式进行拆解。并且,在进行拆解时,其可以自动的识别所使用的语言。
230 0
|
人工智能 API iOS开发
iOS MachineLearning 系列(2)—— 静态图像分析之矩形识别
本系列文章将完整的介绍iOS中Machine Learning相关技术的应用。本篇文章开始,我们将先介绍一些与Machine Learning相关的API的应用。使用这些API可以快速方便的实现很多如图像识别,分析等复杂功能,且不会增加应用安装包的体积。
268 0
|
移动开发 文字识别 开发工具
iOS小技能: OCR 之银行卡/身份证信息识别(免费次数无限)
1. 功能:扫描银行卡识别信息( 银行名称、 银行卡号)并截取银行卡图像 2. 应用场景:快速填充银行卡号的场景,比如商户进件、实名认证
409 0
iOS小技能: OCR 之银行卡/身份证信息识别(免费次数无限)
|
iOS开发
iOS用CallKit实现来电识别、来电拦截
前言 最近需要实现一个新需求,用iOS 10出的CallKit实现将APP的通讯录的信息同步到系统中,可以不把人员信息加到通讯录中,实现来电号码识别。
3111 0
|
Swift iOS开发 容器
iOS 仿支付宝银行卡界面(支持Swift/OC)
在有支付相关的APP中,都有对应的钱包,虽然现在的支付宝,微信支付很流行,但是都是需要绑定自己的银行卡,那么这个银行卡的卡包页面该怎么实现呢?在网上找了许久也没有找到合适的,那就索性自己造轮子。
377 0
|
算法 iOS开发
iOS小知识:银行卡号有效性校验
iOS小知识:银行卡号有效性校验
450 0
iOS小知识:银行卡号有效性校验
|
算法 API iOS开发
iOS 银行卡号有效性校验
iOS 银行卡号有效性校验
603 0
iOS 银行卡号有效性校验
|
文字识别 开发工具 iOS开发
iOS扫描证件&银行卡信息识别;身份证识别 (正反) ;矩形边缘识别 ;自定义证件相机 (含demo源码)【修订版】
iOS扫描证件&银行卡信息识别;身份证识别 (正反) ;矩形边缘识别 ;自定义证件相机 (含demo源码)【修订版】
767 0
iOS扫描证件&银行卡信息识别;身份证识别 (正反) ;矩形边缘识别 ;自定义证件相机 (含demo源码)【修订版】