wkwebview调起支付宝支付

WebView唤起支付宝APP设置:

1
2
3
4
5
6
7
8
9
10
11
12
13
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
// 类似 UIWebView 的 -webView: shouldStartLoadWithRequest: navigationType:
NSString *url = [navigationAction.request.URL.absoluteString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// NSLog(@"拦截的url = %@",url);
if ([url containsString:@"alipay://"]) {//拦截url,截取参数,
NSString* dataStr= [[url substringFromIndex:23] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// NSLog(@"dataStr=%@",dataStr);
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[ NSString stringWithFormat:@"alipay://alipayclient/?%@",[self URLEncodedString:dataStr]]]];// 对参数进行urlencode,拼接上scheme。
}
WKNavigationActionPolicy actionPolicy = WKNavigationActionPolicyAllow;
decisionHandler(actionPolicy);
}

encode 方法

1
2
3
4
- (NSString *)URLEncodedString:(NSString *)url{
NSString * result = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)url,NULL ,CFSTR("!*'();:@&=+$,/?%#[]") ,kCFStringEncodingUTF8));
return result;
}