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];