zoukankan      html  css  js  c++  java
  • 学习进度条86

    关于企业资质开发者申请的微信支付,如何调起微信支付的,官方文档已经很详细,且百度上也有很多相关资料,这里不再介绍。本篇主要讲的是个人资质的支付如何在自己的App中调起微信支付。

    演示

    image

    实现方式

    前端

    演示这边用的是YunGouOS(微信支付服务商))提供的个人资质支付接口,这里在App内唤起微信,主要是使用H5支付方式,通过在App的WebView加载付款的H5支付链接,然后对支付链接进行以下处理:

     webView.webViewClient = object : WebViewClient() {

                override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {

                    if (url.isNullOrEmpty()) {

                        return false

                    }

                    if (url.contains("https://wx.tenpay.com")) {

                        //是支付的url 添加Referer

                        val extraHeaders = HashMap()

                        extraHeaders.put("Referer", BASE_URL)

                        view?.loadUrl(url, extraHeaders)

                        return true

                    }

                    try {

                        if (url.startsWith("weixin://")) {

                            if (url.startsWith("weixin://") && !hadInstalledWechat()){

                                //没有安装微信 则不跳转

                                return false

                            }

                            //唤起微信

                            val intent = Intent()

                            intent.action = Intent.ACTION_VIEW

                            intent.data = Uri.parse(url)

                            startActivity(intent)

                            return true

                        }

                    } catch (e: Exception) {

                        return false

                    }

                    return super.shouldOverrideUrlLoading(view,url)

                }

                ...

         

     }

    在WebViewClient的shouldOverrideUrlLoading()回调中进行处理,如果url包含https://wx.tenpay.com,则说明是微信H5支付的链接,需要为WebView添加Referer,值为唤起微信支付的域名,绑定你服务器的域名,这个需要先在微信后台进行绑定,可以让YunGouOS(微信支付服务商)客服人员帮你进行绑定,然后就可以调起了

    后端

    通过调用YunGouOS官方SDK中的H5Pay方法,生成支付链接:

     String payBody = "会员充值";

     String payUrl = WxPay.H5Pay(orderNum, money, wxMChid, payBody, attach, notifyUrl, returnUrl, "", "", "", wxKey);

    参数说明:

    orderNum: 商户的订单号,也就是自己系统的订单号;

    money: 金额,元为单位;

    wxMChid: 微信商户号,在YunGouOS(微信支付服务商)开通支付后可以获取

    payBody 商品简单描述

    attach 附加数据,回调时候原路返回

    notifyUrl 异步回调地址

    returnUrl 同步回调地址,演示中支付完成后会跳转到支付结果查询的网页,就是因为传入了同步回调地址;

    其他三个传空的为分账需要填入的参数,这里不需要用到分账可以直接填空字符串;

    wxKey 微信支付的key,在YunGouOS(微信支付服务商)开通支付后可以获取

    注意:

    传入returnUrl同步回调地址,并不代表支付成功才会跳转此网址,无论是否支付成功,调起微信支付后,5秒后会自动跳转此地址,所以应该做的是,在同步回调的网页中,添加查询支付结果的逻辑,请求自己查询支付结果的接口,然后判断是否已经支付,显示支付成功或失败。

  • 相关阅读:
    day4-1
    day3-1
    day1-3
    day2-1
    day1-2
    day1 1
    对象的高度整合
    类和数据类型
    对象的绑定方法
    python总结
  • 原文地址:https://www.cnblogs.com/hhw12345/p/14910757.html
Copyright © 2011-2022 走看看