功能描述
- 1、webView加载H5页面
- 2、点击微信支付,调起微信客户端支付
- 3、支付完成,返回APP
操作流程
-
1、调起微信的项目设置
选中‘TARGETS’一栏,在‘info’中的‘LSApplicationQueriesSchemes’添加‘weixin’,已添加过的可以忽略此步骤
-
2、H5拦截微信支付请求,跳转微信
-
2.1 WKWebView
// 实际使用时可以拦截weixin://wap/pay前缀的判断
#pragma mark - WKNavigationDelegate
//! WKWeView在每次加载请求前会调用此方法来确认是否进行请求跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
// 先打印此方法拦截的所有请求
// NSLog(@"\n ==== %@" ,navigationAction.request.URL.absoluteString);
// decisionHandler(WKNavigationActionPolicyAllow);
// return ;
NSURLRequest *request = navigationAction.request;
NSString *scheme = [request.URL scheme];
if (![scheme isEqualToString:@"https"] && ![scheme isEqualToString:@"http"]) {
if ([scheme isEqualToString:@"weixin"]) {
decisionHandler(WKNavigationActionPolicyCancel);
BOOL canOpen = [[UIApplication sharedApplication] canOpenURL:request.URL];
if (canOpen) {
[[UIApplication sharedApplication] openURL:request.URL];
}
return;
}
decisionHandler(WKNavigationActionPolicyAllow);
}
decisionHandler(WKNavigationActionPolicyAllow);
}
-
2.2 UIWebView
NSString *reqUrl = request.URL.absoluteString;
if ([reqUrl hasPrefix:@"weixin://"]) {
if([[UIApplication sharedAp