深入浅出iOSWeb前端之路程序员

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

2017-08-10  本文已影响257人  iii余光

在工作项目中会遇到接入第三方的网页产品支付的链接(比如这次遇到的平安保险),很多情况下是不支持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调起支付宝问题

上一篇 下一篇

猜你喜欢

热点阅读