在工作项目中会遇到接入第三方的网页产品支付的链接(比如这次遇到的平安保险),很多情况下是不支持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去跳转
并且首先是得对方生成的URL连接中包含生成订单的支付信息 这样才可以直接支付 如果只给你了参数 那你只能按照支付宝的规定去拼再调 也可以用SDK调了(应该是包含加密过的私钥的 一般不会给 所以不用想那么多)
参考文章
iOS 关于web调起支付宝问题