iOS H5 微信、支付寶支付

最近項(xiàng)目碰到一個(gè)不接入微信、支付寶SDK做支付的功能,簡單的說的就是用H5調(diào)起微信、支付支付。支付完成后返回app。

注:沒有安裝支付寶app,可以使用網(wǎng)頁版支付。

找了好多資料,其實(shí)原理都一樣,就是攔截wkwebview、webview的請(qǐng)求,對(duì)請(qǐng)求做一些調(diào)整。實(shí)現(xiàn)起來也不難,這里做個(gè)記錄。

- (void)webView:(WKWebView*)webViewdecidePolicyForNavigationAction:(WKNavigationAction*)navigationActiondecisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler {

? ? NSString*str = webView.URL.absoluteString;

// 攔截支付請(qǐng)求

? ? if ([str containsString:@"https://wx.tenpay.com"] || [str containsString:@"https://mclient.alipay"]) {

? ? ? ? NSDictionary*dic = navigationAction.request.allHTTPHeaderFields;

? ? ? ? NSString*refer = dic[@"Referer"];

? ? ? ? if(refer ==nil) {

? ? ? ? ? ? dispatch_async(dispatch_get_main_queue(), ^{

? ? ? ? ? ? ? ? NSURL*url = navigationAction.request.URL;

? ? ? ? ? ? ? ? NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

? ? ? ? ? ? ? ? request.HTTPMethod=@"GET";

? ? ? ? ? ? ? ? [requestaddValue:@"你的app標(biāo)識(shí)"forHTTPHeaderField:@"Referer"];

// 設(shè)置app標(biāo)識(shí)是為了支付完成可以返回app,也就ios 應(yīng)用間的跳轉(zhuǎn),具體可以了解下URL Scheme。iOS 9以后,可以使用通用鏈接實(shí)現(xiàn)app間的調(diào)整(通訊)。

? ? ? ? ? ? ? ? [webViewloadRequest:request];

? ? ? ? ? ? });

? ? ? ? ? ? decisionHandler(WKNavigationActionPolicyCancel);

? ? ? ? ? ? return;

? ? ? ? }

? ? }


? ? NSURL*url = navigationAction.request.URL;

// 調(diào)起微信支付

? ? if ([url.scheme isEqualToString:@"weixin"]) {

? ? ? ? if([url.host isEqualToString:@"wap"]) {

? ? ? ? ? ? if ([url.relativePath? isEqualToString:@"/pay"]) {

? ? ? ? ? ? ? ? if(@available(iOS10.0, *)) {

? ? ? ? ? ? ? ? ? ? [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {


? ? ? ? ? ? ? ? ? ? }];

? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? [[UIApplicationsharedApplication]openURL:url];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? decisionHandler(WKNavigationActionPolicyAllow);

? ? ? ? return;

? ? }

// 調(diào)起支付支付

? ? if ([str containsString:@"https://mclient.alipay"]) {

? ? ? ? if(@available(iOS10.0, *)) {

? ? ? ? ? ? [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {


? ? ? ? ? ? }];

? ? ? ? }else{

? ? ? ? ? ? [[UIApplication sharedApplication] openURL:url];

? ? ? ? }

? ? ? ? decisionHandler(WKNavigationActionPolicyCancel);

? ? ? ? return;

? ? }


? ? decisionHandler(WKNavigationActionPolicyAllow);


}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容