美文网首页深入浅出iOSWeb前端之路程序员
iOS关于UIWeb 与WKWeb 第三方链接调用支付宝失败的解

iOS关于UIWeb 与WKWeb 第三方链接调用支付宝失败的解

作者: iii余光 | 来源:发表于2017-08-10 16:37 被阅读257次

    在工作项目中会遇到接入第三方的网页产品支付的链接(比如这次遇到的平安保险),很多情况下是不支持SDK的
    需求案例:后台或者产品大大给一个H5的产品页面 支付时调起支付宝

    如何在app 内部用web调起支付宝客户端呢

    UIWebView

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
        NSString* reqUrl = request.URL.absoluteString;
        if ([reqUrl hasPrefix:@"alipays://"] || [reqUrl hasPrefix:@"alipay://"] || [reqUrl hasPrefix:@"https://mapi.alipay.com"] ) {
            BOOL bSucc = [[UIApplication sharedApplication]openURL:request.URL];
            
            return bSucc;
            //bSucc是否成功调起支付宝
        }
        return YES;
    }
    
    

    WKWebView

    - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{
        
        NSString* reqUrl = webView.URL.absoluteString;
        if ([reqUrl hasPrefix:@"alipays://"] || [reqUrl hasPrefix:@"alipay://"] || [reqUrl hasPrefix:@"https://mapi.alipay.com"] ) {
            BOOL bSucc = [[UIApplication sharedApplication]openURL: webView.URL];
            //bSucc是否成功调起支付宝
        }
    }
    

    这种openURL打开支付宝支付的方式 跳转会通过Safari去跳转


    IMG_3144.PNG

    并且首先是得对方生成的URL连接中包含生成订单的支付信息 这样才可以直接支付 如果只给你了参数 那你只能按照支付宝的规定去拼再调 也可以用SDK调了(应该是包含加密过的私钥的 一般不会给 所以不用想那么多)


    参考文章
    iOS 关于web调起支付宝问题

    相关文章

      网友评论

        本文标题:iOS关于UIWeb 与WKWeb 第三方链接调用支付宝失败的解

        本文链接:https://www.haomeiwen.com/subject/ldihrxtx.html