iOS-H5微信支付問題總結(jié)(WKWebView篇)

場景描述
  • 1缎讼、WKWebView 加載H5頁面收夸,下單
  • 2、點擊支付按鈕血崭,調(diào)起微信客戶端支付
  • 3卧惜、支付完成,返回APP并刷新頁面
現(xiàn)象描述
因公司業(yè)務需要夹纫,調(diào)試現(xiàn)象如下:
公司前端開發(fā)一套H5頁面咽瓷,和APP端功能類似(提供給第三方集成使用)
客戶完成下單,點擊微信支付捷凄,調(diào)起微信APP忱详,支付完成或者取消支付后,直接跳轉(zhuǎn)進入Safari瀏覽器跺涤,而非返回APP
解決方案
  • 1匈睁、調(diào)起微信前的設置
選中‘TARGETS’一欄,在‘info’中的‘LSApplicationQueriesSchemes’添加‘weixin’桶错,已添加過的可以忽略此步驟
  • 2航唆、由H5頁攔截請求,跳轉(zhuǎn)到微信院刁,代碼如下
// 實際使用時可以攔截weixin://wap/pay前綴的判斷
#pragma mark - WKNavigationDelegate
//! WKWeView在每次加載請求前會調(diào)用此方法來確認是否進行請求跳轉(zhuǎn)
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    
    // 先打印此方法攔截的所有請求
    // NSLog(@"\n ==== %@" ,navigationAction.request.URL.absoluteString);
    // decisionHandler(WKNavigationActionPolicyAllow);
    // return ;

    NSURLRequest *request        = navigationAction.request;
    NSString     *scheme         = [request.URL scheme];

    if (![scheme isEqualToString:@"https"] && ![scheme isEqualToString:@"http"]) {
        if ([scheme isEqualToString:@"weixin"]) {
            decisionHandler(WKNavigationActionPolicyCancel);
            BOOL canOpen = [[UIApplication sharedApplication] canOpenURL:request.URL];
            if (canOpen) {
                [[UIApplication sharedApplication] openURL:request.URL];
            }
            return;
        }
        decisionHandler(WKNavigationActionPolicyAllow);
    }
    decisionHandler(WKNavigationActionPolicyAllow);
}
  • 3糯钙、APP端設置Referer (在WKWebView的request中設置)
[request setValue:@"account.test.com://" forHTTPHeaderField:@"Referer"];

說明:account.test.com為微信后臺注冊二級域名(可以找服務端人員要),
一級域名也可以,其中一級域名格式www.xxx.com,二級域名格式xxx.xxx.com
redirect_url出現(xiàn)在第二步驟的請求攔截URL中享潜,此URL前綴為‘https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb’困鸥,
查看此URL中的redirect_url,修改為‘redirect_url=account.test.com://’剑按,//后可以添加自定義內(nèi)容
  • 5疾就、URL Types配置
選中‘TARGETS’一欄,在‘info’中的‘URL Types’添加一項艺蝴,URL Schemes 填寫‘a(chǎn)ccount.test.com’
  • 6猬腰、支付取消或完成后刷新問題
AppDelegate中實現(xiàn)
// iOS 9.0
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    if ([url.absoluteString containsString:@"account.test.com://"]) {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:url];
    }
    return YES;
}

WebViewController中實現(xiàn)
在viewDidLoad中監(jiān)聽
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(payResult:) name:@"test" object:nil];

- (void)payResult:(NSNotification *)noti {
    // 可以先調(diào)用一次goback 解決weixin:pay出現(xiàn)的白屏問題
    // [self backClick];
    
    //https://www.baidu.com
    //http://192.168.1.14:9871/default/index
    NSURL *newUrl = [NSURL URLWithString:@"https://www.baidu.com"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:newUrl];
    [request setValue:@"account.test.com://" forHTTPHeaderField:@"Referer"];
    [_webView loadRequest:request];
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市猜敢,隨后出現(xiàn)的幾起案子姑荷,更是在濱河造成了極大的恐慌,老刑警劉巖锣枝,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厢拭,死亡現(xiàn)場離奇詭異,居然都是意外死亡撇叁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門畦贸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陨闹,“玉大人,你說我怎么就攤上這事薄坏∏骼鳎” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵胶坠,是天一觀的道長君账。 經(jīng)常有香客問我,道長沈善,這世上最難降的妖魔是什么乡数? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮闻牡,結(jié)果婚禮上净赴,老公的妹妹穿的比我還像新娘。我一直安慰自己罩润,他們只是感情好玖翅,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般金度。 火紅的嫁衣襯著肌膚如雪应媚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天猜极,我揣著相機與錄音中姜,去河邊找鬼。 笑死魔吐,一個胖子當著我的面吹牛扎筒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播酬姆,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼嗜桌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辞色?” 一聲冷哼從身側(cè)響起骨宠,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎相满,沒想到半個月后层亿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡立美,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年匿又,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片建蹄。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡碌更,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出洞慎,到底是詐尸還是另有隱情痛单,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布劲腿,位于F島的核電站旭绒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏焦人。R本人自食惡果不足惜挥吵,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望垃瞧。 院中可真熱鬧蔫劣,春花似錦、人聲如沸个从。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嫌松,卻和暖如春沪曙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萎羔。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工液走, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贾陷。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓缘眶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親髓废。 傳聞我的和親對象是個殘疾皇子巷懈,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348