iOS H5原生WKWebView调起支付宝客户端支付方案

释放双眼,带上耳机,听听看~!

iOS H5原生WKWebView调起支付宝客户端支付方案

问题描述:

安卓直接WebView加载上面的URL直接可完成跳转支付宝弹出支付界面;
iOS WKWebView加载这个URL,只是单纯加载,无法实现跳转;

原因

alipays:// 以后的为支付信息,这个信息后台是经过 URLEncode 后的,前端需要进行解码后才能跳转支付宝支付(坑点)。

解决办法

// 在收到响应开始加载后,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler
{
//返回支付宝的信息字符串,alipays:// 以后的为支付信息,这个信息后台是经过 URLEncode 后的,前端需要进行解码后才能跳转支付宝支付(坑点)
//https://ds.alipay.com/?from=mobilecodec&scheme=alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https%253A%252F%252Fqr.alipay.com%252Fbax041244dd0qf8n6ras805b%253F_s%253Dweb-other
NSString *urlStr = [navigationResponse.response.URL.absoluteString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if ([urlStr containsString:@"alipays://"]) {
NSRange range = [urlStr rangeOfString:@"alipays://"]; //截取的字符串起始位置
NSString * resultStr = [urlStr substringFromIndex:range.location]; //截取字符串
NSURL *alipayURL = [NSURL URLWithString:resultStr];
[[UIApplication sharedApplication] openURL:alipayURL options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @NO} completionHandler:^(BOOL success) {
}];
}
WKNavigationResponsePolicy actionPolicy = WKNavigationResponsePolicyAllow;
//这句是必须加上的,不然会异常
decisionHandler(actionPolicy);
}

 

 

人已赞赏
iOS文章

iOS UICollectionView右对齐的解决方案

2020-5-16 22:03:09

iOS文章

Cocoapods 升级最新版本CDN异常问题(1.9.1)解决方案

2020-5-16 23:18:02

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索