Android 的App使用微信H5支付(亲测有效)

一、申请各种账号

1、申请公司的商户号

2、商户名称

3、H5支付的域名(可申请多个  5个上限)

二、核心代码

class WXPayByWebViewActivity : BaseActivity() {
    var payUrl: String? = ""
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_wxpay_by_web_view)
        payUrl = intent.getStringExtra("payUrl")
        initView()
    }

    var urlJump: String? = ""
    @SuppressLint("SetJavaScriptEnabled")
    private fun initView() {
        val map = HashMap<String, String>()
        map.put("Referer", ServerConfig.NEW_HOST)
        val settings = webview.settings
        settings.javaScriptEnabled = true
        settings.defaultTextEncodingName = "UTF-8"
        settings.javaScriptCanOpenWindowsAutomatically = true
        webview.webChromeClient = WebChromeClient()

        val webViewClient = object : WebViewClient() {

            override fun shouldOverrideUrlLoading(view: WebView?, request: String): Boolean {
                urlJump = request
//                XLog.i("--", request)
                if (request.startsWith("weixin://wap/pay?") || request.startsWith("gree://t_new.yunfanfamily.com")) {
                    EventBus.getDefault().post(PullOrderActivityEvent())
                    val intent = Intent()
                    intent.action = Intent.ACTION_VIEW
                    intent.data = Uri.parse(request)
                    startActivity(intent)
                    return true
                } else {
                    val extraHeaders = HashMap<String, String>()
                    extraHeaders.put("Referer", ServerConfig.NEW_HOST)
                    view!!.loadUrl(request, extraHeaders)
                }
                return true
            }

            override fun onPageFinished(view: WebView?, url: String?) {

            }

            override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
                handler!!.proceed()
            }
        }
        webview.webViewClient = webViewClient
        webview.loadUrl(payUrl, map)
    }

    /**
     * 网页回退
     */
    override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            //不作处理
            return true
        }
        return super.onKeyDown(keyCode, event)
    }

    override fun onDestroy() {
        webview.destroy()
        super.onDestroy()
    }

}

https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx27170125784179d791243f892635544642&package=3520814531&redirect_url=http%3A%2F%2Ft_new.yunfanfamily.com%2Fpay.html

后台返回的url并且拼接的支付失败成功的链接

redirect_url=http%3A%2F%2Ft_new.yunfanfamily.com%2Fpay.html

猜你喜欢

转载自blog.csdn.net/Hunter2916/article/details/88850410