ios網(wǎng)頁支付微信無法返回app的詳細(xì)描述:

下面是對(duì)微信無法返回app的詳細(xì)描述:

1.首先要設(shè)置好你自己項(xiàng)目中的scheme, LSApplicationQueriesSchemes 中添加weixin;

2.你點(diǎn)擊支付的時(shí)候,會(huì)獲取到https://wx.tenpay.com/cgi-bin/mmpayweb。。。。類似這種的連接,這就是你的支付鏈接,如果沒有加載成功有可能是連接中沒有設(shè)置Referer,導(dǎo)致頁面出錯(cuò),關(guān)于添加Referer的問題,大家可自行g(shù)oogle,會(huì)有相應(yīng)的添加方法,webView加載完成后就可以調(diào)起微信/支付寶進(jìn)行支付了。

3.支付完成后無論成功失敗,都會(huì)調(diào)轉(zhuǎn)到Safari瀏覽器中。。。。,不要怕,重點(diǎn)來了

H5支付最終返回APP的解決方案是:把Referer設(shè)置成:www.xxx.com:// scheme設(shè)置成:www.xxx.com就可以直接返回APP了。

注意 /www.xxx.com 這個(gè)必須是H5授權(quán)的域名,這個(gè)一定要注意一下 ,另外這種方法在使用的時(shí)候,回調(diào)的URL中一定不要拼接redirect_url, 不然還是會(huì)跳轉(zhuǎn)到瀏覽器中,這個(gè)如果前端有拼接,可以讓前端來對(duì)iOS區(qū)別使用,不拼接redirect_url,僅供參考。

4.至于支付寶的返回,在上面的代碼中就能處理掉無法返回的問題;

最新項(xiàng)目中遇到H5頁面中調(diào)用微信客戶端支付的需求,雖然這并不是推薦的做法,但是需求確實(shí)存在。。。加載h5頁面點(diǎn)擊支付調(diào)起需要支付的客戶端(微信或者支付寶),

原理上應(yīng)該很簡(jiǎn)單,并且文檔中都提供了相應(yīng)的接口,當(dāng)然想象總是很容易,實(shí)現(xiàn)起來還是出現(xiàn)很多的問題;比如無法調(diào)起微信/支付寶客戶端

下面是解決的代碼部分:

#pragma mark -- webviewDelegate
-(BOOL)webView:(UIWebView*)webViewshouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSURL *url = [request URL];
    NSString *newUrl = url.absoluteString;
    
    NSLog(@"截取到的url---%@",newUrl);
    #warning 微信支付鏈接不要拼接redirect_url,如果拼接了還是會(huì)返回到瀏覽器的
//傳入的是微信支付鏈接:https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx201801291021026cb304f9050743178155&package=3456576571
    if ([newUrl rangeOfString:@"https://wx.tenpay.com"].location != NSNotFound) {
        //這里把webView設(shè)置成一個(gè)像素點(diǎn),主要是不影響操作和界面,主要的作用是設(shè)置referer和調(diào)起微信
        WebChatPayH5VIew *h5View = [[WebChatPayH5VIew alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
        //newUrl是沒有拼接redirect_url微信h5支付鏈接
        [h5View loadingURL:newUrl withIsWebChatURL:NO];
        [self.view addSubview:h5View];
        return NO;
        
    }
    else
    {
        NSLog(@"截取到的url2---%@",newUrl);
 // 調(diào)起支付寶的處理方法  --  這個(gè)方法在https://docs.open.alipay.com/203/106493/ 中可見 
        __weak ScannCodeViewController* wself = self;
 BOOL isIntercepted=[[AlipaySDK defaultService]payInterceptorWithUrl:[request.URL           absoluteString]fromScheme:@"com.gantang"callback:^(NSDictionary*result) {
            
            // 處理支付結(jié)果
            NSLog(@"返回的的的的的d%@", result);
            // isProcessUrlPay 代表 支付寶已經(jīng)處理該URL
            if([result[@"isProcessUrlPay"]boolValue]) {
                
                //returnUrl 代表 第三方App需要跳轉(zhuǎn)的成功頁URL
                NSString* urlStr = result[@"returnUrl"];
                NSLog(@"回調(diào)回來的url%@",urlStr);
                [wself loadWithUrlStr:urlStr];
            }
        }];
        
        if(isIntercepted) {
            
            return NO;
        }
    
    }
    return YES;
    
}
?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 由于公司的業(yè)務(wù)需要,為了節(jié)省申請(qǐng)開通微信支付的時(shí)間和人力,公司決定使用微信h5支付。這樣即節(jié)省了時(shí)間,同時(shí)以后...
    法國(guó)廣寒宮閱讀 69,382評(píng)論 54 86
  • 由于公司的業(yè)務(wù)需要,為了節(jié)省申請(qǐng)開通微信支付的時(shí)間和人力,公司決定使用微信h5支付。這樣即節(jié)省了時(shí)間,同時(shí)以后所有...
    軟件iOS開發(fā)閱讀 966評(píng)論 0 2
  • 從業(yè)這么久遇到的問題無數(shù),之前只為解決問題各種嘗試,解決就可,沒做個(gè)筆記,從各位前人借鑒,真真是體驗(yàn)到前人種樹,后...
    佛系西幾閱讀 11,471評(píng)論 1 4
  • 應(yīng)該有十多年都沒有進(jìn)過網(wǎng)吧了吧! 小區(qū)商業(yè)街有間網(wǎng)吧,開了很多年了。今天晚飯后散步路過,進(jìn)去坐了坐。 現(xiàn)在網(wǎng)吧里面...
    小貼士閱讀 533評(píng)論 1 2
  • 陸地是不是一條大船,沒有盡頭的船,不能在有限的生命里去探索盡這無限的世界,上船還是下船,沒人會(huì)在意,只有自己感受
    赤耳三皮閱讀 205評(píng)論 0 0

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