vue 微信公众号支付 jssdk

jssdk 引入

然后需要在vue项目中引入jssdk,微信为了方便用户使用,将官方的jssdk发布到了npm上,有一个叫weixin-js-sdk的,但我们需要使用的不是这个,网上很多在vue中引用的是这个,但是这个是为commonjs发布的版本,只能通过require引入,很多人发现在vue中引入import wx from ‘weixin-js-sdk’,console.log(wx)会出现undefined,实际为了方便es6使用,官方发布了一个weixin-jsapi,这个才是我们能在vue中引用的jssdk。我也在这里被坑了很久。

然后拿到后台返回的配置参数,通过wx.config来验证配置后,在wx.ready里面就可以调用jssdk提供的api了 看代码

import wx from 'weixin-jsapi'
import * as API from "@/api/affirm";
export default {
  data () {
    return {
      
    }
  },
  mounted() {
    var url_final = window.location.href;
    // console.log(url_final)
   //调取js-sdk
    let _this =this
    var appConfig = {
      pro:{
        appid: "XXXXXXXXXXXXXXXXXXXX",
        token: "XXXXXXXXXXXXXXXXXXXXXXXXXX",
        api: "api.woaap.com",
    }
    }
    var appInfo = appConfig.pro
    var configApi = 'https://' + appInfo.api  + '/api/js-conf?appid=' + appInfo.appid + '&token=' + appInfo.token+ '&url=' + encodeURIComponent(url_final)
      _this.$axios({
        type: 'get',
        url: configApi,
        data: '',
        dataType: 'json',
        timeout: 5000,
        success: function(config){
          wx.config(config)//配置
          config.debug = true

        },
        error: function(xhr, type){
          console.log('request error')
        }
      })
  }
},
  methods: {
    click(){   //点击触发
     API.getpay(这里是后端要你传的参数).then((data) => {
        var args = data
        wx.ready(function(){
           wx.chooseWXPay({
             timestamp: args.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
             nonceStr: args.nonceStr, // 支付签名随机串,不长于 32 位
             package: args.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
             signType: 'MD5', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
             paySign: args.paySign, // 支付签名
             success: function (res) {
                 这里写成功后的动作 我试过跳转路由好像不灵 或者是执行太快后端处理订单未变化呢 我改成了这个   window.location.href="你所要跳转的页面";
             },
             cancel: function (res) {
                 alert('已取消支付');
             },
             fail: function (res) {
                 alert('购买失败,请重新创建订单')
             }
           });
        });
     }) 
  }
}
}
 
 
 
 

*请注意 这里有两个签名 他们是不一样的!!!! debug: true 调试的时候这里这样设置 我报了一个错误 验证签名失败 后来找到服务端 发现是他算法有问题 支付签名算法上网搜一下 后端计算时候可能会出错 我这里是因为timestamp 这个时间戳什么大小写的问题 他改了之后我就可以支付了

这里的

统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)

package这个参数格式要注意 如果后端没有加上 你自己加上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值