android kotlin webview內H5調用微信支付問題

問題

在這裏插入圖片描述

商家參數格式有誤,請聯繫商家解決

微信文檔描述

https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4

在這裏插入圖片描述

解決方法

文檔說明白了,要在請求頭上加上Refrence,
注意並不是在加載webview時加上請求頭,
在這裏插入圖片描述

而是在調用微信支付的時候加上這個請求頭

   override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
            return try {
                if (url!!.startsWith("http:") || url.startsWith("https:")) {
                    val wvHead: MutableMap<String, String> = HashMap()
                    wvHead["Referer"] = Referer
                    view!!.loadUrl(url, wvHead)
                } else {
                    val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
                    startActivity(intent)
                }
                true
            } catch (e: Exception) {
                false
            }
        }

完整程序

package com.wuzhao.ktt.wvtaste

import android.annotation.SuppressLint
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.util.Log
import android.view.KeyEvent
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import com.wuzhao.ktt.R
import kotlin.system.exitProcess


class WebViewTaste : AppCompatActivity() {
    private lateinit var wv: WebView

    companion object {
        // 定義WebView首頁地址[伴生對象]
        const val WEB_URL = "你的webview url"
        const val Referer = "申請的地址"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_web_view_taste)
        initWv()
    }

    @SuppressLint("SetJavaScriptEnabled")
    fun initWv() {
        wv = findViewById<WebView>(R.id.wv)
        wv.settings.javaScriptEnabled = true
        wv.webViewClient = webClient
        wv.loadUrl(WEB_URL)
    }

    private val webClient = object : WebViewClient() {
        override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
            return try {
                if (url!!.startsWith("http:") || url.startsWith("https:")) {
                    val wvHead: MutableMap<String, String> = HashMap()
                    wvHead["Referer"] = Referer
                    view!!.loadUrl(url, wvHead)
                } else {
                    val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
                    startActivity(intent)
                }
                true
            } catch (e: Exception) {
                false
            }
        }
    }

    override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        return if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            if (wv.canGoBack()) {
                wv.goBack()//返回上一頁面
                true
            } else {
                AlertDialog.Builder(this@WebViewTaste)
                    .setTitle("退出") //設置對話框標題
                    .setMessage("確定要退出?") //設置顯示的內容
                    .setPositiveButton(
                        "確定"
                    ) { _, _ ->
                        exitProcess(0)//退出程序
                    }.setNegativeButton(
                        "取消"
                    ) { _, _ ->
                    }.show()
                false
            }
        } else {
            super.onKeyDown(keyCode, event)
        }
    }

}

搬家語雀了

csdn編輯器太難用了

原文語雀
https://www.yuque.com/wuzhao/kb/xa0a89

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章