1矮慕、經(jīng)過2天的坑總結(jié)一下兩個支付集成:
瀏覽器alloc設(shè)置:
代理方法區(qū)分微信和支付寶跳轉(zhuǎn)
- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler {
? ? NSString*urlString = [[navigationAction.requestURL]absoluteString];
? ? urlString = [urlStringstringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
? ? if([urlStringcontainsString:@"weixin://wap/pay?"]) {
? ? ? ? decisionHandler(WKNavigationActionPolicyCancel);
?? ? ? ? //解決wkwebview weixin://無法打開微信客戶端的處理
? ? ? ? NSURL*url = [NSURLURLWithString:urlString];
? ? ? ? BOOL bSucc = [[UIApplication sharedApplication]openURL:url];
? ? ? ? if(!bSucc) {
? ? ? ? ? ? [self showHint:@"未檢測到微信APP恳啥,請您先安裝"];
? ? ? ? }else
? ? ? ? {
? ? ? ? ? ? [[UIApplication sharedApplication]openURL:url options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @NO} completionHandler:^(BOOL success) {
? ? ? ? ? ? }];
? ? ? ? }
? ? }else if ([urlString containsString:@"alipay://alipayclient/?"])
? ? {
? ? ? ? decisionHandler(WKNavigationActionPolicyCancel);
? ? ? ? urlString = [urlStringstringByReplacingOccurrencesOfString:@"alipays" withString:kPaySchemeURL];
? ? ? ? urlString=[urlStringstringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
? ? ? ? [NSCharacterSet URLQueryAllowedCharacterSet];
? ? ? ? NSURL*url = [NSURLURLWithString:urlString];
? ? ? ? BOOL bSucc = [[UIApplication sharedApplication]openURL:url];
? ? ? ? if(!bSucc) {
? ? ? ? ? ? [self showHint:@"未檢測到支付寶APP亏拉,請您先安裝"];
? ? ? ? }else
? ? ? ? {
? ? ? ? ? ? [[UIApplication sharedApplication]openURL:url options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @NO} completionHandler:^(BOOL success) {
? ? ? ? ? ? }];
? ? ? ? }
? ? }else{
? ? ? ? decisionHandler(WKNavigationActionPolicyAllow);
? ? }
}
配置這些以后應(yīng)該能調(diào)起支付寶/微信了。
最后配置白名單:
這樣微信/支付寶支付完成會調(diào)起我們的應(yīng)用并在appdelegate里接到回調(diào):
注意點:
1尺棋、支付寶可獲取到是否支付成功標(biāo)識
2、微信無法獲取到支付結(jié)果撕攒,所以獲取到訂單編號陡鹃,去本地服務(wù)器校驗
3、支付寶return_url是無效的抖坪,需要客戶端修改alipays為自己的白名單,其實就是fromAppUrlScheme對應(yīng)的數(shù)據(jù)
服務(wù)器要做的:?
1闷叉、微信h5可自定義支付返回結(jié)果擦俐,把客戶端的白名單和訂單編號一起返回