react-native-webView H5支付

上代碼 解析在下邊 適用于所有安卓手機(jī)端webview支付
ios 添加微信Scheme即可使用

//攔截H5頁(yè)面跳轉(zhuǎn)事件 (request ) => boolean true繼續(xù)跳轉(zhuǎn) false停止跳轉(zhuǎn)

<WebView>
source={{ uri: 'uri',}}
  onShouldStartLoadWithRequest={request => {
              //url
              const url = request.url;
              console.log('nowUrl', request);
              //如果跳轉(zhuǎn)的為 微信支付或者 支付寶支付
              if (
                url.startsWith('weixin://wap/pay?') ||
                url.startsWith('alipay')
              ) {
                if (url.startsWith('alipay')) {
                  //打開(kāi)支付寶
                  Linking.openURL(url);

                } else {
                  console.log('wxpay', url);
                  //打開(kāi)微信
                  Linking.openURL(url);
                }
                return false;
              } else {
                console.log('未攔截');
                return true;
              }
            }}
</WebView>

因微信支付特殊性 需修改react-nativ-webview 文件node_modules\react-native-webview\android\src\main\java\com\reactnativecommunity\webview\RNCWebViewManager.java

shouldOverrideUrlLoading方法

修改為以下

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

      final String url = request.getUrl().toString();

      if(url.startsWith("https://wx.tenpay.com")){
        Map<String, String> headers = new HashMap<String, String>();
        headers.put("Referer","http:xxxxxxx.xxx");//填入 H5 端的支付域名
        view.loadUrl(url, headers);
        return true;
      }

      return this.shouldOverrideUrlLoading(view, url);

    }

微信支付解析(僅自己理解)

H5發(fā)送跳轉(zhuǎn)事件 跳轉(zhuǎn)到 【https://wx.tenpay.com/xxxx】 的頁(yè)面(對(duì)應(yīng)底層的攔截) 由此頁(yè)面生成真正的H5支付信息和跳轉(zhuǎn)鏈接
這個(gè)跳轉(zhuǎn)鏈接以【weixin://wap/pay?】為開(kāi)頭 在webview中攔截此頁(yè)面
調(diào)用打開(kāi)瀏覽器的方法 去打開(kāi)此鏈接會(huì)自動(dòng)跳轉(zhuǎn)

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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