参考文章: https://www.jianshu.com/p/157b8ae457ef
实现WKwebview的代理,然后在此代理从填写这个
#pragma mark - WKNavigationDelegate
/** 在发送请求之前,决定是否跳转 */
#pragma mark - WKNavigationDelegate
- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler {
NSURL*hosturl = navigationAction.request.URL;
NSString*hostname = navigationAction.request.URL.host.lowercaseString;
NSLog(@"hosturl = %@ \n hostname = %@ \n ",hosturl, hostname);
NSString*str = [hosturlabsoluteString];
if ([hosturl.absoluteString containsString:@"alipay://alipayclient/"] || [hosturl.absoluteString containsString:@"weixin://"]){
NSString *nows = [NSString stringWithFormat:@"%@", hosturl];
NSString *ho = [nows stringByReplacingOccurrencesOfString:@"alipays" withString:@"qpclient"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:ho]];
}
decisionHandler(WKNavigationActionPolicyAllow);
}
支付结束后无法跳回APP。我们都知道iOS内的应用间跳转,基本都是通过scheme的方式,跳出去如此,要返回也是如此。
先看下支付宝支付:
捕获支付宝web支付跳转链接如 alipay://alipayclient/?{"requestType":"SafePay","fromAppUrlScheme":"alipays","dataString":"h5_route_token=\"shierRZ25\"&is_h5_route=\"true\""}
发现其中只要将fromAppUrlScheme改为APP内配置的scheme,即可正确跳转回应用。
再看一下微信,微信的h5支付回调应该是服务端提供的一个h5地址,因此支付完成后默认是跳转到了Safari,在APP内进行的支付,我们要换掉这个回调,变成我们自己的。
网友评论