zoukankan      html  css  js  c++  java
  • iOS 芝麻认证开发(跳转本地的支付宝进行认证开发)

    1,首先注册芝麻认证开发平台

    https://b.zmxy.com.cn/product/productDetail.htm?productId=w1010100000000002978&scene=shop

    2,查看芝麻认证文档中心

    https://b.zmxy.com.cn/technology/openDoc.htm?LEFT_MENU_MODE=LEFT_BLANK&id=566

    开始认证方式 1:商户有自己的 App 使用 native 的方式唤起支付宝客户端(可选)

    这个原理是 跳转至自己手机的支付宝进去认证  不需要调用SDK

    A:先判断手机是否安装支付宝

    B:支付宝需要传入 真实姓名,身份证号码,手机号(可选,以需求而定)

    C: 首先将param传给后台服务器,服务器返回一串字符串(如下)

    "https://zmopenapi.zmxy.com.cn/openapi.do?charset=UTF-8&method=zhima.customer.certification.certify&sign=oPsjcCksTxwm3Gm0eVSIZ11TZAB69I4bt9xhW6x1Y6qFpuF6Xbmtw1XIW9G2J2ogvlpoIUgsLSpq%2BQjNG7CWbiyMfIj1%2BctCkEFIBWSFN%2Bs30anlfT1GMVfQWJWOtwP%2Fiseid2HWObREOO3DZ9MlKzwJWBHEnX5WLXkvq3M%2F5KA%3D&version=1.0&app_id=300000271&sign_type=RSA&platform=zmop&params=T1mDX729nz5ul0kcJ7%2BGt%2FSQwKv4yO%2BbqP8kgHeaAQW80wwP4PvxG27XyP0CondPH7x4Wz1UmH4YfATijBpUEVy6XpnFDoELd00Yr5za4G%2FR08QpaSb1fZYHiQCOEu1CLJC7nqGIQKuNZ0EcJQPd3D5%2FRtv9SrjDFLZb%2But3d%2Fs%3D";

    ps:后台生成这段字符串  一定要掉2个接口,否则生成的字符串无法认证

    zhima.customer.certification.initialize 认证初始化 服务端调用

    zhima.customer.certification.certify 生成认证请求 URL  服务端调用

    D: 移动端再拼接固定的url跳转至支付宝

    NSString *alipayUrl = [NSString stringWithFormat:@"alipays://platformapi/startapp?appId=20000067&url=%@",

                               [self URLEncodedStringWithUrl:url]];(url是后台返回的字符串,必须Encoded)

    F:当认证成功/失败需要跳转至app

    移动端设置:

    需要在.info 里面的 URL types -->URL Schemes里面添加一个标识,最好与项目匹配 

    weilvapp://  (weilvapp这个就是设置在URL Schemes里面的标识)将这句话发给后台服务端,让他设置在return_url这个字段返回

    ps:如果认真成功/失败无法自动回到app,检查下URL types -->URL Schemes   不需要后面再拼接什么

    E:当认证成功或失败回到app时,芝麻认证都会返回一个状态

    在appdelagete里面获取

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options

    [url absoluteString]  这样可以拿到返回来的字符串 进行转字符串

    再将里面的params 和 sign进行截取  截取方法如下:然后再将截取后的字符串传给后台即可

      NSArray *strarray = [url componentsSeparatedByString:@"="];

        NSString *param = [strarray objectAtIndex:1];

        NSArray *paramSrr = [param componentsSeparatedByString:@"&"];

        NSString *params =[paramSrr firstObject];

        NSString *sign =[strarray lastObject];

        NSMutableDictionary *paraDic = @{}.mutableCopy;

        [paraDic setObject:params forKey:@"params"];

        [paraDic setObject:sign forKey:@"sign"];

    代码如下:

    NSString *alipayUrl = [NSString stringWithFormat:@"alipays://platformapi/startapp?appId=20000067&url=%@",

                               [self URLEncodedStringWithUrl:url]];(url是后台返回的字符串,必须Encoded)

     if ([self canOpenAlipay]) {//是否安装支付宝

            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:alipayUrl] options:@{} completionHandler:^(BOOL success) {//跳转到支付宝芝麻认证

            }];

        } else {

            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"" message:@"是否下载并安装支付宝完成认证?"

                                                               delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"好的", nil];

            [alertView show];

        }

    //字符串encode

    - (NSString *)URLEncodedStringWithUrl:(NSString* )url {

        NSString *encodedString = (NSString* )CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)url,NULL,(CFStringRef) @"!'();:@&=+$,%#[]|",kCFStringEncodingUTF8));

        return encodedString;

    }

    //是否安装支付宝

    - (BOOL)canOpenAlipay {//

        return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"alipays://"]];

    }

    //如果没有安装支付宝  就跳转至苹果市场下载支付宝

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

        if (buttonIndex == 1) {

            NSString *appstoreUrl = @"itms-apps://itunes.apple.com/app/id333206289";

            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:appstoreUrl] options:@{} completionHandler:nil];

        }else{

        }

    }

  • 相关阅读:
    【数据结构】并查集
    项目管理【12】 | 项目范围管理-收集需求
    项目管理【11】 | 项目范围管理-规划范围管理
    项目管理【10】 | 项目范围管理-范围管理概述
    Visual Studio代码远程调试方法
    项目管理【09】 | 项目整体管理-结束项目或阶段
    操作系统【2】Linux系统安装
    操作系统【1】Linux基础知识
    移动端开发案例【2】头部组件开发
    移动端开发案例【1】全局样式配置
  • 原文地址:https://www.cnblogs.com/liaolijun/p/7764983.html
Copyright © 2011-2022 走看看