react-native webview跳轉(zhuǎn)支付寶客戶端并返回app

本文主要介紹react-native 通過webview跳轉(zhuǎn)支付寶客戶端進(jìn)行支付,并且支付完成后能自動返回當(dāng)前的app,一般app進(jìn)行支付直接是鏈接支付寶的sdk酿傍,如果是直接通過sdk進(jìn)行支付請忽略此文章特纤。

本文主要借鑒支付寶官網(wǎng)的網(wǎng)頁支付:https://docs.open.alipay.com/203/107091/
iOS原生跳轉(zhuǎn)網(wǎng)頁支付寶怎么返回當(dāng)前app的文章:http://www.reibang.com/p/0d8dd04fe94e

一開始我先用webview直接加載一個支付寶的網(wǎng)頁鏈接岁疼,真機(jī)運(yùn)行之后,只能網(wǎng)頁支付晨逝,不能跳轉(zhuǎn)支付寶蛾默,后來又轉(zhuǎn)戰(zhàn)到原生,然后一系列的rn跟原生交互捉貌,原生跟js交互支鸡,根據(jù)上面兩篇文章的介紹冬念,能成功跳轉(zhuǎn)支付寶客戶端并返回

#pragma mark   ============== webview相關(guān) 回調(diào)及加載 ==============
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
  // NOTE: ------  對alipays:相關(guān)的scheme處理 -------
  // NOTE: 若遇到支付寶相關(guān)scheme,則跳轉(zhuǎn)到本地支付寶App
  NSString* reqUrl = request.URL.absoluteString;
  if ([reqUrl hasPrefix:@"alipays://"] || [reqUrl hasPrefix:@"alipay://"]) {
    // NOTE: 跳轉(zhuǎn)支付寶App
    NSString *strUrl = [reqUrl stringByReplacingOccurrencesOfString:@"alipays" withString:@"xxx"];//這里面的xxx是你在iOS原生配置的urlScheme牧挣,用來返回你的app的一個標(biāo)志
    NSURL *urls =[NSURL URLWithString:strUrl];
    [[UIApplication sharedApplication]openURL:urls];
  }
  return YES;
}

因為我們支付寶支付完成之后跳轉(zhuǎn)到成功頁面急前,會有一個按鈕,點擊這個按鈕跳轉(zhuǎn)到rn指定的頁面浸踩,用原生就有一個問題叔汁,首先原生支付完成之后,他要先返回到rn頁面检碗,然后才能在跳轉(zhuǎn)到指定頁面据块,這樣就會有一個一閃一跳的問題,如果頁面沒有這種操作,直接跳轉(zhuǎn)原生也是很不錯的折剃。

因為上述問題另假,也因為對rn的webview跳轉(zhuǎn)到支付寶客戶端竟然做不到的不甘心,然后又嘗試了一番怕犁,結(jié)果是可以的边篮,看webview的文檔發(fā)現(xiàn),其實rn的webview也是有 “onShouldStartLoadWithRequest” 這個方法的奏甫,然后我就按照原生的方法戈轿,復(fù)制到了這個方法里面,成功跳轉(zhuǎn)支付寶阵子,但是支付寶返回的時候思杯,返回不到自己的app,代碼如下:

 onShouldStartLoadWithRequest(event){
        let reqUrl =event.url;
        if(reqUrl.indexOf("alipay://alipayclient")>-1 || reqUrl.indexOf("alipays://alipayclient")>-1) {
            let  strUrl = reqUrl.replace("alipays", "xxx");//這里面的xxx是你在iOS原生配置的urlScheme,用來返回你的app的一個標(biāo)志
            Linking.openURL(strUrl);
        }
        return true;
    }

我試過好幾次挠进,每次都返回不了app色乾,但是我把我上面修改之后的url拿出來放在瀏覽器試驗了一番,是可以的跳轉(zhuǎn)到支付寶并且能返回到app的领突,既然鏈接沒有問題暖璧,那就是代碼問題了,我試著在onShouldStartLoadWithRequest這個方法里面跟原生進(jìn)行交互君旦,把跳轉(zhuǎn)放在原生里面依舊不行澎办,放棄了。于宙。
后來又看了一下支付寶官網(wǎng)的網(wǎng)頁支付的demo浮驳,發(fā)現(xiàn)了當(dāng)他跳轉(zhuǎn)到支付寶的時候,會有一個判斷捞魁,可以自行下載他官方的demo ,看一下代碼至会,然后我就修改了一下代碼:

 onShouldStartLoadWithRequest(event){
        let reqUrl =event.url;
        if(reqUrl.indexOf("alipay://alipayclient")>-1 || reqUrl.indexOf("alipays://alipayclient")>-1) {
            let  strUrl = reqUrl.replace("alipays", "XXX");
            Linking.openURL(strUrl);
            return false; //這一行是新加入了,必須加谱俭,如果不加奉件,就返回不了app
        }
        return true;
    }

成功返回自己的app宵蛀,中途報了一個錯

Setting onMessage on a WebView overrides existing values of window.postMessage, but a previous value was defined.
解決辦法:
https://blog.csdn.net/qq_37336604/article/details/80857895 自己看鏈接吧,比較懶县貌。术陶。。

小提示:安卓的webview是能直接跳轉(zhuǎn)到支付寶客戶端的煤痕,如果iOS用了onShouldStartLoadWithRequest梧宫,請自行判斷是iOS還是安卓,因為安卓加上上述代碼摆碉,就不能跳轉(zhuǎn)到客戶端了塘匣。。巷帝。

文章到這里就結(jié)束了忌卤,寫的比較亂,但大體思路就這樣楞泼,感謝上面提供 支付寶跳轉(zhuǎn)成功無法返回app文章的大神驰徊,他寫的文章成功的解決了我的問題,如果大家有新的解決辦法堕阔,或者是有更好的思路棍厂,請指教!超陆!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末勋桶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子侥猬,更是在濱河造成了極大的恐慌,老刑警劉巖捐韩,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件退唠,死亡現(xiàn)場離奇詭異,居然都是意外死亡荤胁,警方通過查閱死者的電腦和手機(jī)瞧预,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仅政,“玉大人垢油,你說我怎么就攤上這事≡驳ぃ” “怎么了滩愁?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長辫封。 經(jīng)常有香客問我硝枉,道長廉丽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任妻味,我火速辦了婚禮正压,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘责球。我一直安慰自己焦履,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布雏逾。 她就那樣靜靜地躺著嘉裤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪校套。 梳的紋絲不亂的頭發(fā)上价脾,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音笛匙,去河邊找鬼侨把。 笑死,一個胖子當(dāng)著我的面吹牛妹孙,可吹牛的內(nèi)容都是我干的秋柄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼蠢正,長吁一口氣:“原來是場噩夢啊……” “哼骇笔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嚣崭,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤笨触,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雹舀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芦劣,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年说榆,在試婚紗的時候發(fā)現(xiàn)自己被綠了虚吟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡签财,死狀恐怖串慰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唱蒸,我是刑警寧澤邦鲫,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站油宜,受9級特大地震影響掂碱,放射性物質(zhì)發(fā)生泄漏怜姿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一疼燥、第九天 我趴在偏房一處隱蔽的房頂上張望沧卢。 院中可真熱鬧,春花似錦醉者、人聲如沸但狭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽立磁。三九已至,卻和暖如春剥槐,著一層夾襖步出監(jiān)牢的瞬間唱歧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工粒竖, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留颅崩,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓蕊苗,卻偏偏與公主長得像沿后,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子朽砰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348