iOS Swift

引入pod

  1. pod 'CryptoSwift','~> 1.0'
  2. pod 'Alamofire','~>4.7.2'
  3. pod 'SwiftyJSON','~> 4.1.0'
  4. pod 'HandyJSON','~> 5.0.0-beta.1'

使用方式

  1. // case puzzle = 0 //"滑动拼图"
  2. // case clickword = 1 //"字符校验"
  3. let type =CaptchaType(rawValue: sender.tag)??.puzzle
  4. CaptchaView.show(type){(v)in
  5. print(v)
  6. }

事件

参数说明
completeBlock回调函数,可自定义回调内容,根据自己服务定制

请求处理

  1. CaptchaRequest.swift
  2. 请求接口及处理
  3. AJBaseRequest.swift
  4. 网络请求基类

请求接口地址 配置在 AJBaseRequest类中 ,需要更改地址替换kServerBaseUrl即可

校验注意事项

请求验证码接口中会有secretKey参数,当secretKey有值, 进行as加密, 加密key为secretKey,不加密情况下pointJson为json系列化为字符串

  1. CaptchaRequest.captchaAccept(currentType, success:{(model)in
  2. self.repModel = model
  3. //secretKey有值 代表需要进行加密
  4. if(self.repModel.secretKey.count >0){
  5. self.needEncryption =true
  6. }else{
  7. self.needEncryption =false
  8. }
  9. self.getRequestView(self.currentType)
  10. }){(error)in
  11. self.repModel =CaptchaResponseData()
  12. self.getRequestView(self.currentType)
  13. }
  14. let pointEncode =ESConfig.jsonClickWordEncode(pointsList)
  15. var pointJson ="";
  16. //请求数据有secretKey 走加密 否则不走加密
  17. if(self.needEncryption){
  18. pointJson =ESConfig.aesEncrypt(pointEncode,self.repModel.secretKey)
  19. }else{
  20. pointJson = pointEncode;
  21. }

二次校验传参

  1. // token是get请求获取的 pointStr是坐标序列化的字符串
  2. //如果需要加密 将字符串进行拼接加密
  3. var successStr ="\(token)---\(pointStr)";
  4. if(self.repModel.secretKey.count >0){
  5. successStr =ESConfig.aesEncrypt(successStr,self.repModel.secretKey)
  6. }
  7. success(successStr)

iOS OC

引入pod

  1. pod 'AFNetworking'
  2. pod 'JSONModel'

使用方式

  1. // case puzzle = 0 //"滑动拼图"
  2. // case clickword = 1 //"字符校验"
  3. [CaptchaView showWithType: sender.tag ==0? puzzle: clickword CompleteBlock:^(NSString* result){
  4. NSLog(@"result: %@", result);
  5. }];

事件

参数说明
completeBlock回调函数,可自定义回调内容,根据自己服务定制

请求处理

  1. #import "CaptchaRequest.h"
  2. 请求接口及处理
  3. #import "AFAppDotNetAPIClient.h"
  4. 网络请求基类

请求接口地址 配置在 AFAppDotNetAPIClient类中 ,需要更改地址替换AFAppDotNetAPIBaseURLString即可

校验注意事项

请求验证码接口中会有secretKey参数,当secretKey有值, 进行as加密, 加密key为secretKey,不加密情况下pointJson为json系列化为字符串

  1. NSDictionary*dic =@{@"x":@(point.x),@"y":@5};
  2. NSString*pointEncode =[ESConfig jsonEncode:dic];
  3. NSLog(@"序列化: %@",pointEncode);
  4. NSString*pointJson = pointEncode;
  5. //请求数据有secretKey 走加密 否则不走加密
  6. if(self.captchaModle.secretKey.length >0){
  7. pointJson =[pointEncode aes256_encrypt:pointEncode AESKey:self.captchaModle.secretKey];
  8. }
  9. NSLog(@"加密: %@",pointJson);
  10. [self requestDataPointJson:pointJson Token:self.captchaModle.token PointStr:pointEncode];

二次校验传参

  1. // token是get请求获取的 pointStr是坐标序列化的字符串
  2. //如果需要加密 将字符串进行拼接加密
  3. NSString*successStr =[NSString stringWithFormat:@"%@---%@",token, pointStr];
  4. if(self.captchaModle.secretKey.length >0){
  5. successStr =[successStr aes256_encrypt:successStr AESKey:self.captchaModle.secretKey];
  6. }
  7. [self showResultWithSuccess:result SuccessStr:successStr];