self.url = @"https://qr.alipay.com/bax06385q32ssucugqxm00f1";
NSURL *alipayURL = [NSURL URLWithString:self.url];
[[UIApplication sharedApplication] openURL:alipayURL options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @NO} completionHandler:^(BOOL success) {
NSLog(@"");
}];
原因:
self.url = @"https://qr.alipay.com/bax06385q32ssucugqxm00f1";
上面的url解析得到如下:
//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
如同下面跳轉(zhuǎn)代碼
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
//返回支付寶的信息字符串,alipays:// 以后的為支付信息,這個(gè)信息后臺(tái)是經(jīng)過(guò) URLEncode 后的,前端需要進(jìn)行解碼后才能跳轉(zhuǎn)支付寶支付(坑點(diǎn))
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;
//這句是必須加上的,不然會(huì)異常
decisionHandler(actionPolicy);
}
通過(guò) alipays:// 進(jìn)行了打開支付寶app。
下面設(shè)置未必要

image.png