iOS app WebView微信H5支付,跳浏览器问题

因为微信H5 支付有个redirect_url = “”;当这个值带有http 的时候支付完成或者取消支付的时候,返回都打开了浏览器。

解决:1.可以修改 redirect_url 的值,修改成跳入自己app的scheme。

            2.如果无法修改 redirect_url 的话,只能在webView 加载时拦截连接进行替换。注意一点:自己app Scheme地址得和H5支付填写的域名保持一致。

如下:

if ([scheme hasPrefix:@"https://wx.tenpay.com/"] && ![scheme hasSuffix:[NSString stringWithFormat:@"redirect_url=自己appscheme://"]]) {

            decisionHandler(WKNavigationActionPolicyCancel);            NSString*redirectUrl =nil;

            if([schemecontainsString:@"redirect_url="]) {

                NSRangeredirectRange = [schemerangeOfString:@"redirect_url"];

                redirectUrl = [[schemesubstringToIndex:redirectRange.location]stringByAppendingString:[NSStringstringWithFormat:@"自己appscheme://"]];

            }else{

                redirectUrl = [schemestringByAppendingString:[NSStringstringWithFormat:@"自己appscheme://"]];

            }

            NSMutableURLRequest *newRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:redirectUrl] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30];

            newRequest.allHTTPHeaderFields= navigationAction.request.allHTTPHeaderFields;

            newRequest.URL= [NSURLURLWithString:redirectUrl];

            [webViewloadRequest:newRequest];

            return;

        }

如果返回app还得加载成功H5页面成功页面的话,可以保存或者拿到成功页面地址,进入app进行第二次加载。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容