vue微信公众号支付过程

下载依赖

NPM库

npm install weixin-jsapi
  •  

引入

import wx from 'weixin-jsapi'

拉起支付 

// 点击立即支付按钮
payNow () {
    var $this = this;
    this.$post('/wx/pay/orderPayNow',    // 支付接口 
        {
            ... ...   一堆参数
            totalFee: this.totalFee          // 示例:总费用
        }
    ).then(function(res) {
        if(res.code == 1000){
            wx.ready(function(){
                wx.chooseWXPay({
                    appId:res.data.appId,     // appId
                    timestamp: res.data.timeStamp, // 支付签名时间戳
                    nonceStr: res.data.nonceStr, // 支付签名随机串
                    package: res.data.packageValue, // 统一支付接口返回的prepay_id参数值
                    signType: res.data.signType, // 签名方式
                    paySign: res.data.paySign, // 支付签名(签名算法看微信开放文档的js-sdk文档的附录1,当然这是后端的事情)
                    // 支付成功,跳入支付成功页面,点击完成按钮会进入success和complete函数
                    success: function (res) {
                        // res.errMsg === 'chooseWXPay:ok'方式判断前端返回,微信团队郑重提示:
                        // res.errMsg将在用户支付成功后返回ok,但并不保证它绝对可靠, 切记。
                        // res.errMsg === 'chooseWXPay:cancel'  支付取消

                        if (res.errMsg === 'chooseWXPay:ok') {      // 支付成功进入这个判断
                                $this.$toast('支付成功!')
                                $this.$router.replace({       // 支付成功后跳入自己需要额页面
                                    path: "/payHistory",
                                })
                        } else if (res.errMsg === 'chooseWXPay:cancel') {    // 经过测试 用户取消支付不会进入这个判断,而是进入complate和cancel函数
                                $this.$toast('取消支付');
                        }
                        $this.$toast('success:' + res.errMsg)
                    },
                    // 不管支付成功与否,只要拉起支付之后进行任何操作之后,都会进入complate函数
                    complete: function (res) {      
                        if (res.errMsg === 'chooseWXPay:ok') {           // 成功 res.errMsg === 'chooseWXPay:ok' // 支付成功提示页面,点击完成按钮之后 
                                $this.$toast('支付成功!')
                                $this.$router.replace({
                                    path: "/payHistory",
                                })
                                // 或者关闭窗口// wx.closeWindow()  如果调用这个关闭接口,要在验签的时候配置jsapiList// WeixinJSBridge.call('closeWindow');
                        } else if (res.errMsg === 'chooseWXPay:cancel') {   // 取消 res.errMsg === 'chooseWXPay:cancel'
                                $this.$toast('取消支付');
                        }
                        $this.$toast('complete:' + res.errMsg)
                        // 对于下面这个说法:我经过实际测试:ios和Android支付成功后点击完成按钮都会进入success和complete函数,并且返回信息都是 res.errMsg === 'chooseWXPay:ok'
                        // 网友说法:对于安卓客户端支付成功后不进入chooseWXPay函数success的问题原因是:iOS和安卓返回的数据不同,实际如下:支付成功后:安卓客户端返回的是 {"errMsg":"getBrandWCPayRequest:ok"},而iOS返回的是{"err_Info":"success","errMsg":"chooseWXPay:ok"},安卓找不到success入口
                    },
                    // 用户取消支付--实际上进入cancel 和 complate 函数
                    cancel: function (res) {     
                        $this.$toast('已取消支付');
                    },
                    // 支付失败
                    fail: function (res) {
                        $this.$toast('支付失败,请重试');
                    }
                })
            })
            // 验签错误或者其他错误
            wx.error(function (res) {
                $this.$toast('支付错误!')
            })
        }else{
            $this.$toast({
                message: '获取支付信息失败,请重试',
            });
        }
    }).catch(function(error){
        $this.$toast('缴费请求失败!请重试');
    });
}

在这里插入图片描述

 点击这个完成按钮,就会进入success和complate函数中,进行判断就好了

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值