日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 应用内微信 H5 支付

發布時間:2024/4/17 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 应用内微信 H5 支付 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一般情況下,要實現應用內支付接入 App 支付 SDK 即可滿足業務需求,不過考慮到對于一些類似游戲中心的場景,更多是需要支持 H5 支付。相對微信來說,支付寶的對接簡單完善很多,所以本篇文章主要說說接入微信 H5 支付的流程和一些問題。

申請流程

按照微信支付官網 H5 支付說明 ,目前是沒有直接申請接入 H5 支付的入口,只能在微信商戶平臺中去另行開通。然鵝~微信商戶平臺賬戶也不支持直接注冊申請,只能先注冊微信開放平臺后接入微信 App 支付后才會有商戶賬號分配。

1. 注冊微信開放平臺賬戶

2. 申請開放平臺開發者認證

3. 創建一個應用提交申核

需要應用相關資質,主要是為了開通支付功能。

4. 為應用申請微信 App 支付,開通微信支付功能

開通成功后會自動分配微信商戶平臺賬戶

5. 登錄商戶平臺申請開通 H5 支付

這里只是簡單介紹下申請流程的主要環節,具體操作起來有多麻煩我也不想去體會。

應用內接入

說到這里可能有些人想笑了,既然叫 H5 支付那不是應該跟應用本身沒多大關系才對,不就是一個支付鏈接跳轉而已嗎。

話是這么說沒錯,但是具體操作起來還是有些坑需要去踩。由于微信 H5 支付本身就是瀏覽器網頁支付場景下的產物,所以微信官方并不推薦在應用中使用 H5 支付。

跟瀏覽器不一樣,在 WebView 中我們還需要自己處理一些問題。比如為了實現調起微信支付,需要對支付鏈接進行攔截后才能進行處理,下面就來看看這個流程。

WebViewClient webViewClient = new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {// 判斷 url 的 scheme 進行相應的處理if (url.startsWith("weixin://")){ try{startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));return true;}catch (Exception e) {//防止crash (如果手機上沒有安裝處理某個 scheme 開頭的 url 的APP, 會導致crash)AlertDialog.Builder builder;builder = new AlertDialog.Builder(mActivity);builder.setTitle("支付中心").setMessage("該手機沒有安裝微信客戶端,請安裝微信后重新完成支付,或換用支付寶進行支付").setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {dialogInterface.dismiss();}}).create().show();return true;}}else if (url.startsWith("alipays://") || url.startsWith("alipay")){ // ------ 對alipays:相關的scheme處理 -------try{mActivity.startActivity(new Intent("android.intent.action.VIEW", Uri.parse(url)));return true;}catch (Exception e) {// 啟動支付寶失敗,換成網頁支付mPayWebView.loadUrl(url);return true;}}if (!(url.startsWith("http") || url.startsWith("https"))) {return true;}view.loadUrl(url, map);return true;} } 復制代碼

你以為這樣就完了是吧,然鵝并沒有,實際開發中很大機率會出現微信提示商家參數格式有誤,請聯系商家解決的問題,而且更尷尬的是:這個問題并不會 iOS 中出現,也不會 Android 瀏覽器中出現,偏偏就是在應用的 WebView 中出現了。

查看官方文檔出錯問題介紹,說是當前調起 H5支付的 referer 為空導致,WTF? 難道 Android WebView 打開一個鏈接的 referer 不知指向當前頁面的域名?都說實踐是檢驗真理的唯一標準,抓包看看好像還真的是,很好,再一次感覺到了 Android 系統咖喱味代碼。

沒辦法,這鍋也不能甩給微信,只能按照文檔說的解決方法自己來背。然而這文檔說的也是不明不白的,只是說域名設置要一致,廢話不多說,直接動手更簡單,下面給出示例代碼(已自行檢驗過,真實可用的)

直接在原有的代碼基礎上進行更改

WebViewClient webViewClient = new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {...if (!(url.startsWith("http") || url.startsWith("https"))) {return true;}// 比如我們申請時填寫的是經常用來測試網絡連通性的 http://www.baidu.comHashMap<String, String> map = new HashMap<String, String>();// 指定申請微信 H5 支付時填寫的域名,map.put("Referer", "http://www.baidu.com");view.loadUrl(url, map);return true;} } 復制代碼

Over...

轉載于:https://juejin.im/post/5a3522fbf265da430a50a71d

總結

以上是生活随笔為你收集整理的Android 应用内微信 H5 支付的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。