博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS - Card Identification 银行卡号识别
阅读量:6711 次
发布时间:2019-06-25

本文共 3432 字,大约阅读时间需要 11 分钟。

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    // 遵守协议    
  • 开始扫描银行卡

    [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

转载于:https://www.cnblogs.com/QianChia/p/6213485.html

你可能感兴趣的文章
外国文学最佳中译本合集-选
查看>>
关于this的指向问题
查看>>
我在 impress.js 中学到的小套路
查看>>
notepad++之TextFX插件
查看>>
静态数码管——小白的单片机笔记
查看>>
文件处理之处理模式及其黑魔法
查看>>
基于FPGA的电压表与串口通信(下)
查看>>
How to Allow Apps from Anywhere in macOS Gatekeeper (Mojave, Sierra, High Sierra)
查看>>
Windows 下目录切换以及挂载小技巧
查看>>
读取STGMEDIUM中的数据
查看>>
linux命令之添加删除磁盘分区
查看>>
Canvas练习
查看>>
Mac 常用命令及快捷键
查看>>
post
查看>>
Javascript面向对象编程(三) 非构造函数的继承
查看>>
[python机器学习及实践(6)]Sklearn实现主成分分析(PCA)
查看>>
Jquery 错误提示插件
查看>>
关于ARC和MRC
查看>>
history.back(-1)和history.go(-1)的区别
查看>>
数据表删除、清空操作
查看>>