js调用微信支付

(function () {

var  baseurl=''
    var course_id
    var code
    var jwt_token
    var token
    var data = {}
    var order_type = 'course'
    var order_sn
    var pay_type
    var datapar
    var jwt_tokentime
    var openid
    var flag =false

    // 获取code 课程course_id
    var query = window.location.search.substring(1);
        if (query) {
        var vars = query.split("&");
        for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split("=");
            data[pair[0]] = pair[1]
        }
        code = data.code
        course_id = data.course_id
        var codecourse_id = { code: code, course_id: course_id }
        localStorage.setItem('codecourse_id', JSON.stringify(codecourse_id))
    }


    if (!course_id) {
        codecourse_id = localStorage.getItem('codecourse_id')
        codecourse_id = JSON.parse(codecourse_id)
        code = codecourse_id.code
        course_id = codecourse_id.course_id
    }
    
// 微信浏览器 获取支付价格
    var weixinAndbrowser = false

    is_weixin();
    function is_weixin() {
        var ua = window.navigator.userAgent.toLowerCase();
        if (ua.match(/MicroMessenger/i) == 'micromessenger') {
            // 微信 打开浏览器 跳微信链接
              if(!code){
                var weixinurl = 'https://open.weixin.qq.com'
                weixinurl = weixinurl.replace('course_id=90', `course_id=${course_id}`);
                window.location.href=weixinurl
            }
            pay_type = 1
            weixinAndbrowser = true
            gettoken(course_id)

        } else {
            pay_type = 4
            // 浏览器
            weixinAndbrowser = false
            gettoken(course_id)
        }
    }
 
    


    
    //是否授权过
    function openUserMsg(code) {
        $.ajax({
            url: `${baseurl}/api/app/v/1.0/wechatLoginGetUserinfo`,
            method: 'get',
            dataType: "json",
            data: ({
                code: code
            }),
            success: function (res) {
                if (res.code == -2) {
                    //让去登录 存储订单信息
                    localStorage.setItem('userShopCar', JSON.stringify(res.data))
                    window.location.href = '/pay/login.html'
                } else if (res.code == 1) {
                    jwt_tokentime = JSON.parse(localStorage.getItem('jwt_token'))
                    //授权过直接下单
                     jwt_tokentime = {
                        token: null,
                        time: Date.now(),
                        expire: 1000 * 60 * 100,
                        openid:res.data.openid
                    }
                    jwt_tokentime.token = res.data.jwt_token
                    token = res.data.jwt_token
                    localStorage.setItem('jwt_token', JSON.stringify(jwt_tokentime))
                    gettoken(course_id)
                    if(flag){
                        place(order_type, course_id, token)
                    }
                }
            }
        })
    }



    $('.priceSubmit').click(function () {
         jwt_tokentime = JSON.parse(localStorage.getItem('jwt_token'))
        if (jwt_tokentime) {
            let newTime = Date.now()
            let oldTime = jwt_tokentime.time
            let expire = jwt_tokentime.expire
            let diffTime = newTime - oldTime
                openid = jwt_tokentime.openid
            if (diffTime > expire) {
                //token过期走授权
                localStorage.removeItem('jwt_token');
                if(weixinAndbrowser){
                    // token 过期 走价格 走下单
                    flag = true
                    openUserMsg(code)
                    }else{
                    window.location.href = '/pay/login.html'
                }
            } else {
                //token不过期下单
                token = jwt_tokentime.token
                place(order_type, course_id, token)
            }
        }
    })



    // 下单
    function place(order_type, course_id, token) {
        $.ajax({
            url: `${baseurl}/api/app/v/1.0/addOrder`,
            headers: {
                Accept: "application/json; charset=utf-8",
                token: token
            },
            method: 'post',
            dataType: "json",
            data: ({
                order_type: order_type,
                item_id: course_id
            }),
            success: function (res) {
                if (res.code == 1) {
                    order_sn = res.data.order_sn
                    if(weixinAndbrowser){
                        
                        weixinpay(token, order_sn, order_type, pay_type,openid)
                    }else{
                        $('.modePayType').fadeIn()
                    }
                }else{
                    console.log('addOrder',res.message)
                    $('.bedefeated').html(res.message)
                    $('.bedefeated').fadeIn()
                    setTimeout(function () {
                        $('.bedefeated').fadeOut()
                    }, 2000)
                }
            }
        })
    }

        $('.paycolse').click(function(){
            $('.modePayType').fadeOut()
        })
            
    // 选择微信支付宝
    $('.modePayTypLink .payType').click(function(){
        $(this).find('.select img').fadeIn()
        $(this).siblings().find('.select img').fadeOut()
        let payType =$(this).data('paytype')
        if(payType=='weixin'){
            weixinpay(token, order_sn, order_type, pay_type)
        }else if(payType=='zhifubao'){
            Alipay(token, order_sn)
        }
        
    })


    // 微信 浏览器微信支付
    function weixinpay(token, order_sn, order_type, pay_type,openid) {
        $.ajax({
            url: `${baseurl}/api/app/v/1.0/unifiedorder`,
            headers: {
                Accept: "application/json; charset=utf-8",
                token: token
            },
            method: 'get',
            dataType: "json",
            data: ({
                order_sn: order_sn,
                order_type: order_type,
                pay_type: pay_type,
                openid:openid
            }),
            success: function (res) {
                if (res.code == 1) {
                    datapar = res.data
                    if(weixinAndbrowser){
                        onBridgeReady(datapar)
                    }else{
                        window.location.href = res.data.mweb_url
                    }
                }else{
                    console.log('unifiedorder',res.message)
                    $('.bedefeated').html('请稍后再试',res)
                    $('.bedefeated').fadeIn()
                    setTimeout(function () {
                        $('.bedefeated').fadeOut()
                    }, 2000)
                }
            }
        })
    }

    // 支付宝

    function Alipay(token, order_sn){
        $.ajax({
            url: `${baseurl}/api/app/v/1.0/wappay`,
            headers: {
                Accept: "application/json; charset=utf-8",
                token: token
            },
            method: 'post',
            dataType: "json",
            data: ({
                order_sn: order_sn,
            }),
            success: function (res) {
                if (res.code == 1) {
                    window.location.href = res.data 
                }else{
                    console.log('wappay',res.message)

                    $('.bedefeated').html('请稍后再试')
                    $('.bedefeated').fadeIn()
                    setTimeout(function () {
                        $('.bedefeated').fadeOut()
                    }, 2000)  
                }
            }
        })
    }

    // 去微信支付
    function onBridgeReady(datapar) {
        WeixinJSBridge.invoke(
            'getBrandWCPayRequest', {
            "appId": datapar.appId,     //公众号ID,由商户传入     
            "timeStamp": datapar.timeStamp, //时间戳,自1970年以来的秒数     
            "nonceStr": datapar.nonceStr, //随机串     
            "package": datapar.package,
            "signType": datapar.signType, //微信签名方式:     
            "paySign": datapar.paySign //微信签名
        },
            function (res) {
                if (res.err_msg == "get_brand_wcpay_request:ok") {
                    // 使用以上方式判断前端返回,微信团队郑重提示:
                    //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
                } else {

                }
            });
    }

    


    //获取价格 
    function riseInPrice(token, course_id) {
        $.ajax({
            url: `${baseurl}/api/app/v/1.0/courseDetail`,
            headers: {
                Accept: "application/json; charset=utf-8",
                token: token
            },
            method: 'get',
            dataType: "json",
            data: ({
                cid: course_id
            }),
            success: function (res) {
               if(res.code==1){
                   var coursePrice =res.data.price
                  $('.pricelogin .price').html('&yen;'+coursePrice)
               }else{
                $('.bedefeated').html('请稍后再试')
                $('.bedefeated').fadeIn()
                setTimeout(function () {
                    $('.bedefeated').fadeOut()
                }, 2000)  
               }
            }
        })
    }


    // 获取token
    function gettoken(course_id) {
        jwt_tokentime = JSON.parse(localStorage.getItem('jwt_token'))
        if (jwt_tokentime) {
            let newTime = Date.now()
            let oldTime = jwt_tokentime.time
            let expire = jwt_tokentime.expire
            let diffTime = newTime - oldTime
            if (diffTime > expire) {
                //token过期删除localStorage
                localStorage.removeItem('jwt_token');
                window.location.href = '/pay/login.html'
            } else {
                token = jwt_tokentime.token
                riseInPrice(token,course_id)
            }
        }else{
            if(weixinAndbrowser){
                openUserMsg(code)
            }else{
                 window.location.href = '/pay/login.html'
            }
               
        }
    }




  
     

}())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值