iOS SDK 接入指南

安装

手动导入

1.在Paymax官网下载iOS SDK开发包,将lib目录下的文件添加到你的项目

2.依赖 Frameworks:

必需:

CFNetwork.framework

SystemConfiguration.framework

Security.framework

libc++.dylib

libz.dylib

libsqlite3.0.dylib

CoreTelephony.framework

3.添加 URL Schemes:在 Xcode 中,选择你的工程设置项,选中 TARGETS 一栏,在 Info 标签栏的 URL Types 添加 URL Schemes,如果使用微信,填入微信平台上注册的应用程序 id(为 wx 开头的字符串),如果不使用微信,则自定义,建议起名稍复杂一些,尽量避免与其他程序冲突。允许英文字母和数字,首字母必须是英文字母,不允许特殊字符。 空标题文档 - 图1

调用支付

客户端从服务器端拿到支付要素后,调用下面的方法
  1. /**
  2. * 支付接口
  3. *
  4. * @param essential 支付要素
  5. * @param schemeStr 调用支付的app注册在info.plist中的scheme
  6. * @param viewController 当前的viewController
  7. * @param complethionBlock 支付结果回调Block
  8. */
  9. [PaymaxSDK pay:responseObject
  10. appScheme:K_APPP_SCHEME
  11. viewController:self
  12. completion:^(PaymaxBack *paymaxBack) {
  13. switch (paymaxBack.explain) {
  14. case Paymax_CODE_SUCCESS:
  15. [self showAlertMessage:@"成功"];
  16. break;
  17. case Paymax_CODE_FAIL_CANCEL:
  18. [self showAlertMessage:@"用户取消支付"];
  19. break;
  20. case Paymax_CODE_ERROR_DEAL:
  21. [self showAlertMessage:@"处理中"];
  22. break;
  23. case Paymax_CODE_Failure:
  24. [self showAlertMessage:@"支付失败"];
  25. break;
  26. case Paymax_CODE_ERROR_CONNECT:
  27. [self showAlertMessage:@"网络错误"];
  28. break;
  29. case Paymax_CODE_ChannelWrong:
  30. [self showAlertMessage:@"渠道信息错误"];
  31. break;
  32. case Paymax_CODE_ERROR_CHARGE_PARAMETER:
  33. [self showAlertMessage:@"参数信息错误"];
  34. break;
  35. case Paymax_CODE_ERROR_WX_NOT_INSTALL:
  36. [self showAlertMessage:@"未安装微信"];
  37. break;
  38. case Paymax_CODE_ERROR_WX_NOT_SUPPORT_PAY:
  39. [self showAlertMessage:@"微信不支持"];
  40. break;
  41. case Paymax_CODE_ERROR_WX_UNKNOW:
  42. [self showAlertMessage:@"微信未知错误"];
  43. break;
  44. }
  45. }];
  46. });
  47. }
  48. }];

接收并处理交易结果

渠道为微信、支付宝且安装了支付宝钱包,请在AppDelegate.m里实现下面的方法
  1. // iOS 8及以下 请用这个
  2. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
  3. return [PaymaxSDK handleOpenURL:url withCompletion:^(PaymaxBack *paymaxBack) {
  4. NSLog(@"AppDelegate-openURL-PaymaxBack.channelBackCode=%@\nPaymaxBack.channel=%@\nPaymaxBack.backDescription=%@\nPaymaxBack.prCode=%ld",paymaxBack.channelBackCode,paymaxBack.channel,paymaxBack.backDescription,paymaxBack.prCode);
  5. }];
  6. }
  7. // iOS 9 以上请用这个
  8. - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options {
  9. return [PaymaxSDK handleOpenURL:url withCompletion:^(PaymaxBack *paymaxBack) {
  10. NSLog(@"AppDelegate-openURL-PaymaxBack.channelBackCode=%@\nPaymaxBack.channel=%@\nPaymaxBack.backDescription=%@\nPaymaxBack.prCode=%ld",paymaxBack.channelBackCode,paymaxBack.channel,paymaxBack.backDescription,paymaxBack.prCode);
  11. }];
  12. }
错误返回
  1. typedef NS_ENUM(NSUInteger, PaymaxBackExplain) {
  2. Paymax_CODE_SUCCESS, /**< 成功*/
  3. Paymax_CODE_FAIL_CANCEL, /**< 用户取消支付*/
  4. Paymax_CODE_ERROR_DEAL, /**< 处理中*/
  5. Paymax_CODE_Failure, /**< 失败*/
  6. Paymax_CODE_ERROR_CONNECT, /**< 网络错误*/
  7. Paymax_CODE_ChannelWrong, /**< 渠道信息错误*/
  8. Paymax_CODE_ERROR_CHARGE_PARAMETER, /**< 参数信息错误*/
  9. Paymax_CODE_ERROR_WX_NOT_INSTALL, /**< 未安装微信*/
  10. Paymax_CODE_ERROR_WX_NOT_SUPPORT_PAY, /**< 微信不支持*/
  11. Paymax_CODE_ERROR_WX_UNKNOW /**< 微信未知错误*/
  12. };

注意事项

1.

针对使用 Xcode 7 编译失败,遇到错误信息为: XXXXXXX does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.

请到 Xcode 项目的 Build Settings 标签页搜索 bitcode,将 Enable Bitcode 设置为 NO 即可。

2.

针对 iOS 9 限制 http 协议的访问,如果 App 需要访问 http://, 则需要在 Info.plist 添加如下代码:

  1. Info.plist中添加NSAppTransportSecurity类型Dictionary
  2. NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES

3. 如果微信支付完成后无法跳回到自己的APP可能是获取到的APPID与URL Types里添加 的URL Schemes不同

4. 在plist里添加微信和支付宝的白名单 空标题文档 - 图2 5. 在Build Settings->Other Linker Flags 中添加 -ObjC 关键字

6. 如果使用拉卡拉支付需要导入lklimages文件夹

FaceRecoSDK 接入指南

说明:为了保证用户资金安全,使用拉卡拉支付必须支持人脸识别

1.发起支付前,请先通过后台接口判断是否需要调起人脸识别。商户后台通过调用Paymax Server SDK 向paymax服务器发起请求,获得结果码的方式进行判断(已经识别过的用户可不用再次识别验证),详细步骤请参考Demo

2.如果需要调用,请参考如下内容:

  1. /**
  2. * 活体检测接口
  3. *
  4. * @param controller 需要弹出活体检测控制器,如果是当前控制器则为self
  5. * @param name 姓名
  6. * @param idCardNo 身份证号
  7. * @param secretKey 商户secretKey
  8. * @param resultBlock 活体检测和人脸识别接口
  9. * /
  10. +(void)startFaceRecoWithViewController:(UIViewController *)controller
  11. Name:(NSString *)name
  12. IdCardNo:(NSString *)idCardNo
  13. UserId:(NSString *)userId
  14. SecretKey:(NSString *)secretKey
  15. resultBlock:(void(^)(DetectResult result))resultBlock;

根据人脸识别结果进行相应处理,识别成功后发送通知到下单页面进行下单,如下为Demo处理情况,仅供参考:

  1. [FaceRecoSDK startFaceRecoWithViewController:self Name:self.nameTextField.text IdCardNo:self.idCardTextField.text UserId:self.userid SecretKey:@"55970fdbbf10459f966a8e276afa86fa" resultBlock:^(DetectResult result) {
  2. switch (result) {
  3. case DetectResult_LiveCancel:
  4. [self showAlertMessage:@"活体检测取消"];
  5. break;
  6. case DetectResult_LiveFail:
  7. [self showAlertMessage:@"活体检测失败"];
  8. break;
  9. case DetectResult_ACCORDANCE:
  10. [self.navigationController popViewControllerAnimated:YES];
  11. [[NSNotificationCenter defaultCenter] postNotification:[NSNotification
  12. notificationWithName:@"PlaceOrder"
  13. object:nil userInfo:nil]];
  14. break;
  15. case DetectResult_INCONFORMITY:
  16. [self showAlertMessage:@"人脸识别不一致"];
  17. break;
  18. case DetectResult_REQUEST_TIMESTAMP_EXPIRE:
  19. [self showAlertMessage:@"时间戳过期或超前"];
  20. break;
  21. case DetectResult_VERIFY_FAILED:
  22. [self showAlertMessage:@"签名校验失败"];
  23. break;
  24. case DetectResult_ILLEGAL_REQUEST_BODY:
  25. [self showAlertMessage:@"请求参数不合法"];
  26. break;
  27. case DetectResult_ILLEGAL_ARGUMENT:
  28. [self showAlertMessage:@"非法参数"];
  29. break;
  30. case DetectResult_ILLEGAL_DATA:
  31. [self showAlertMessage:@"请求数据非法"];
  32. break;
  33. case DetectResult_IDCARDNO_ERROR:
  34. [self showAlertMessage:@"身份证号码不正确"];
  35. break;
  36. case DetectResult_REALNME_IDCARD_NOT_SAME:
  37. [self showAlertMessage:@"姓名身份证不匹配"];
  38. break;
  39. case DetectResult_NetworkError:
  40. [self showAlertMessage:@"网络请求错误"];
  41. break;
  42. default:
  43. break;
  44. }
  45. }];

注意事项

1.在Build Phases->Compile Sources 下给GifView加上-fno-objc-arc

2.工程中需要添加libc++.tbd依赖库

3.人脸识别SDK中通过标准宏TARGET_IPHONE_SIMULATOR判断是模拟器的话就不编译我们的代码,所以当项目中使用人脸识别sdk时,该项目不可以在模拟器环境下编译运行。