iOS:扫描银行卡识别卡号

最近项目要用到一个功能:通过扫描银行卡,获取银行卡号,在网上搜过后,选用了card.io这个SDK,过程如下: 
(1)下载Card.io 
Card.io是让手机摄像头获取信用卡的信息,中间利用了OCR(光学字符识别)的扫描技术返回结果,它还推出了SDK(软件开发包),让开发者们可以把card.io添加到自己的应用当中。可以在https://github.com/paypal/PayPal-iOS-SDK下载最新的SDK或者直接下载我的下载好的:http://download.csdn.net/detail/u012890196/8658627 
(2)添加到项目里 
1、将下载的SDK包里名为CardIO的文件拖到工程里,在TARGETS-Build Phases - Link Binary With Librarys添加下面依赖库 
* AudioToolbox 
* AVFoundation 
* CoreGraphics 
* CoreMedia 
* CoreVideo 
* Foundation 
* MobileCoreServices 
* OpenGLES 
* QuartzCore 
* Security 
* UIKit 
如果是xcode5或者更新的版本,只需要添加下面的库 
* AVFoundation 
* AudioToolbox 
* CoreMedia 
* MobileCoreServices 
并且保证Build Settings里面这两项都是YES: 
* Enable Modules (C and Objective-C) 
*Link Frameworks Automatically

2、在TARGETS-Build Settings添加 -lc++到Other Linker Flags

(3)使用 
我是把它作为一个viewController类使用 
代码: 
导入

<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#import <span class="hljs-title" style="box-sizing: border-box;">"CardIO.h"</span></span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#import <span class="hljs-title" style="box-sizing: border-box;">"CardIOPaymentViewControllerDelegate.h"</span></span>


- (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)viewWillAppear:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">BOOL</span>)animated {
  [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">super</span> viewWillAppear:animated];
  [CardIOUtilities preload];
}
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//开始扫描</span>
- (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">IBAction</span>)scanCard:(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span>)sender
 {
  CardIOPaymentViewController *scanViewController = [[CardIOPaymentViewController alloc] initWithPaymentDelegate:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span>];
  [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span> presentViewController:scanViewController animated:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span> completion:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>];
}
下面是代理方法
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//取消扫描</span>
- (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)userDidCancelPaymentViewController:(CardIOPaymentViewController *)scanViewController 
{
  <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSLog</span>(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"User canceled payment info"</span>);
  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// Handle user cancellation here...</span>
  [scanViewController dismissViewControllerAnimated:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span> completion:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>];
}
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//扫描完成</span>
-(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)info inPaymentViewController:(CardIOPaymentViewController *)scanViewController 
{
  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//扫描结果</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//CardIOCreditCardInfo *info里面包含了银行卡的一些信息,如info.cardNumber是扫描的银行卡号,现实的是完整号码,而info.redactedCardNumber只显示银行卡后四位,前面的用*代替了,返回的银行卡号都没有空格</span>
可以用下面注释的方法来加空格
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    NSString *strTem = [info.cardNumber stringByReplacingOccurrencesOfString:@" " withString:@""];</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    NSString *strTem2 = @"";</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    if (strTem.length % 4 == 0)</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    {</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//        int count = strTem.length / 4;</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//        for (int i = 0; i < count; i++)</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//        {</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//            NSString *str = [strTem substringWithRange:NSMakeRange(i * 4, 4)];</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//            strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//        }</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    }</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    else</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    {</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//        int count = strTem.length / 4;</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//        for (int j = 0; j <= count; j++)</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//        {</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//            if (j == count)</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//            {</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//                NSString *str = [strTem substringWithRange:NSMakeRange(j * 4, strTem.length % 4)];</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//                strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//            }</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//            else</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//            {</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//                NSString *str = [strTem substringWithRange:NSMakeRange(j * 4, 4)];</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//                strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//            }</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//        }</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//    }</span>
  <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSLog</span>(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Received card info. Number: %@, expiry: %02i/%i, cvv: %@."</span>, info<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.redactedCardNumber</span>, info<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.expiryMonth</span>, info<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.expiryYear</span>, info<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.cvv</span>);
  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// Use the card info...</span>
  [scanViewController dismissViewControllerAnimated:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span> completion:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>];
}
</code><div>
</div>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值