1、CardIO识别
1.1 、CaedIO SDK下载
1.2、使用方法
1、把框架整个拉进自己的工程,然后在 TARGETS => Build Phases => Link Binary With Libraries 里边分别加入下面这几个框架。
Accelerate.framework
MobileCoreServices.framework
CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
2、在TARGETS => Build Settings => Other Linker Flags 中添加 -ObjC 和 -lc++ 。
3、在 iOS8 + 系统中使用相机需要在 Info.plist 中添加 Privacy - Camera Usage Description,并设置其值。
4、在我们需要调用的文件中导入
1 // 导入头文件
2 #import "CardIO.h"
3 #import "CardIOPaymentViewControllerDelegate.h
4
5 // 遵守协议
6 <CardIOPaymentViewControllerDelegate>
1.3、主要方法
1、开始扫描银行卡
1 [CardIOUtilities preload];
2
3 CardIOPaymentViewController *scanViewController = [[CardIOPaymentViewController alloc] initWithPaymentDelegate:self];
4
5 [self presentViewController:scanViewController animated:YES completion:nil];
2、取消扫描
1 // CardIOPaymentViewControllerDelegate 协议方法
2 - (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)paymentViewController {
3
4 [[[UIAlertView alloc] initWithTitle:@"User cancelled sca"
5 message:nil
6 delegate:nil
7 cancelButtonTitle:@"确定" otherButtonTitles:nil, nil] show];
8
9 [self dismissViewControllerAnimated:YES completion:nil];
10 }
3、完成扫描
1 // CardIOPaymentViewControllerDelegate 协议方法
2 - (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)cardInfo inPaymentViewController:(CardIOPaymentViewController *)paymentViewController {
3
4 // 获取扫描结果
5
6 // cardNumber 是扫描的银行卡号,显示的是完整号码,而 redactedCardNumber 只显示银行卡后四位,前面的用 * 代替了,返回的银行卡号都没有空格
7
8 NSString *redactedCardNumber = cardInfo.cardNumber; // 卡号
9 NSUInteger expiryMonth = cardInfo.expiryMonth; // 月
10 NSUInteger expiryYear = cardInfo.expiryYear; // 年
11 NSString *cvv = cardInfo.cvv; // CVV 码
12
13 // 显示扫描结果
14 NSString *msg = [NSString stringWithFormat:@"Number: %@nn expiry: %02lu/%lunn cvv: %@", [self dealCardNumber:redactedCardNumber], expiryMonth, expiryYear, cvv];
15 [[[UIAlertView alloc] initWithTitle:@"Received card info" message:msg delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil] show];
16
17 [self dismissViewControllerAnimated:YES completion:nil];
18 }
4、银行卡信息处理
1 // 对银行卡号进行每隔四位加空格处理,自定义方法
2 - (NSString *)dealCardNumber:(NSString *)cardNumber {
3
4 NSString *strTem = [cardNumber stringByReplacingOccurrencesOfString:@" " withString:@""];
5 NSString *strTem2 = @"";
6
7 if (strTem.length % 4 == 0) {
8
9 NSUInteger count = strTem.length / 4;
10 for (int i = 0; i < count; i++) {
11 NSString *str = [strTem substringWithRange:NSMakeRange(i * 4, 4)];
12 strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];
13 }
14
15 } else {
16
17 NSUInteger count = strTem.length / 4;
18 for (int j = 0; j <= count; j++) {
19
20 if (j == count) {
21 NSString *str = [strTem substringWithRange:NSMakeRange(j * 4, strTem.length % 4)];
22 strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];
23 } else {
24 NSString *str = [strTem substringWithRange:NSMakeRange(j * 4, 4)];
25 strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];
26 }
27 }
28 }
29
30 return strTem2;
31 }
原文链接: https://www.cnblogs.com/francisblogs/p/6541474.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/250778
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!