zoukankan      html  css  js  c++  java
  • 微信公众支付(H5)工具类

    import request from '@/utils/request'
    
    // 微信支付(未调用后台接口)
    export function wxPay(url, param, methodType, successCallBack, failCallBack) {
        if (!isWechat()) return
        const promise = initiateRequest(url, param, methodType)
        if (promise) {
            promise.then(res => {
                if (res) {
                    initAndInvokeWxJSBridge(res, successCallBack, failCallBack)
                }
            })
        }
    }
    
    // 微信支付(已调用后台接口,paySign为后台接口返回数据)
    export function wxPayByPaySign(paySign, successCallBack, failCallBack) {
        if (!isWechat()) return
        if (paySign) {
            initAndInvokeWxJSBridge(paySign, successCallBack, failCallBack)
        }
    }
    
    function invokeWxPay(resData, successCallBack, failCallBack) {
        WeixinJSBridge.invoke('getBrandWCPayRequest', resData,
            res => {
                const msg = res.err_msg ? res.err_msg : res.errMsg;
                switch (msg) {
                    case 'get_brand_wcpay_request:ok':
                        if(successCallBack) {
                            successCallBack(res)
                        }
                        break
                    default:
                        WeixinJSBridge.log('支付失败!'+msg+',请返回重试.');
                        if(failCallBack){
                            failCallBack(res)
                        }
                        break
                }
            })
    }
    
    function initAndInvokeWxJSBridge(resData, successCallBack, failCallBack) {
    
        if (typeof WeixinJSBridge === 'undefined') {
            if (document.addEventListener) {
                document.addEventListener('WeixinJSBridgeReady', invokeWxPay(resData, successCallBack, failCallBack), false)
            } else if (document.attachEvent) {
                document.attachEvent('WeixinJSBridgeReady', invokeWxPay(resData, successCallBack, failCallBack))
                document.attachEvent('onWeixinJSBridgeReady', invokeWxPay(resData, successCallBack, failCallBack))
            }
        } else {
            invokeWxPay(resData, successCallBack, failCallBack)
        }
    }
    
    function isWechat() {
        const ua = window.navigator.userAgent.toLowerCase();
        return ua.match(/micromessenger/i) == 'micromessenger'
    }
    
    function initiateRequest(url, param, methodType) {
        if (methodType && url) {
            const t = methodType.toLowerCase()
            switch (t) {
                case 'post':
                    return request.post({
                        url: url,
                        params: param
                    })
                case 'get':
                    return request.get({
                        url: url,
                        params: param
                    })
                case 'put':
                    return request.put({
                        url: url,
                        params: param,
                        header: {
                            "content-type": "application/x-www-form-urlencoded"
                        }
                    })
                default :
                    return request.post({
                        url: url,
                        params: param
                    })
            }
        }
        return null
    }
    

      

  • 相关阅读:
    测试Leader应该做哪些事
    软件测试基础理论详解
    测试用例设计方法--场景分析法详解
    测试用例设计方法--因果图法、判断表法详解
    测试用例设计方法--正交试验法详解
    jira创建仪表盘以及对应的数据用二维表显示
    如何对PyCharm进行设置
    selenium+python自动化测试环境安装
    卸载loadrunner
    通过抓包工具(fiddler)获取手机app/微信的网络信息
  • 原文地址:https://www.cnblogs.com/rain-in-summer/p/14372305.html
Copyright © 2011-2022 走看看