zoukankan      html  css  js  c++  java
  • iOS

    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: %@
      
       expiry: %02lu/%lu
      
       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;
      	}
      
    • 效果

      cardid4 cardid5

  • 相关阅读:
    Emmet Documentation
    微软雅黑的Unicode码和英文名
    Eclipse让代码自动换行(WordWarp)
    如何更改MyEclipse代码自动换行的长度?
    PHP之道推荐使用PHP版本,数据库方式,以及虚拟机的创建程序
    ime-mode:disabled是什么?
    document.getElementsByClassName在ie8及其以下浏览器的兼容性问题
    Unobtrusive JavaScript 不唐突的JavaScript的七条准则
    详解 arguments, callee, caller, call, apply的区别
    怎样在谷歌浏览器上加载金山词霸的取词插件?
  • 原文地址:https://www.cnblogs.com/QianChia/p/6213485.html
Copyright © 2011-2022 走看看