vue公众号h5 微信支付 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 公众号相关 >

vue公众号h5 微信支付

发表时间:2020-10-29

发布人:葵宇科技

浏览次数:39

vue微信公众号h5微信支付

可以配合https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1微信支付。

一.配置好公众号的基本配置(网页域名授权,你需要填写正确的可以访问的项目域名,js安全域名都要配)还有公众号的设置

在这里插入图片描述

在这里插入图片描述

二.配置微信商户平台的内容才可以开始支付

商户平台需要进行的配置是:商户号,支付密钥
商户号一般都是和自己公众号的商户号是一样的
商户支付目录是可以配置一个泛目录

在这里插入图片描述
如果出现这种情况就是支付目录没配好
在这里插入图片描述

三.安装js-sdk的或者weixin-jsapi包,这有个坑点就是项目如果是vue你要用weixin-jsapi,用js-sdk会有别的坑问题

(用npm 或yarn安装npm install weixin-js-sdk --save 或者npm install weixin-jsapi --save)import wx from “weixin-jsapi” 在main.js里面引入;

四.配置微信wx.config文件,调用官方api完成支付

在这里插入图片描述

  //  微信支付
   async getConfig() {
      let result = await apiWxConfig({
        url: window.location.href.split("#")[0], // 获取当前扫码界面的url,url后面不能携带任何参数及#号,所以在此进行分割
      });
      if (result.code == 200) {
        var timestamp = result.data.timestamp;
        var noncestr = result.data.nonceStr;
        var signature = result.data.signature;
        var appId = result.data.appId;
        console.log("rresult.data.timestamp", result.data.timestamp);

        wx.config({
          debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
          //                                debug : true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
          appId: appId, // 必填,公众号的唯一标识
          timestamp: timestamp, // 必填,生成签名的时间戳
          nonceStr: noncestr, // 必填,生成签名的随机串
          signature: signature, // 必填,签名,见附录1
          jsApiList: ["checkJsApi", "chooseWXPay"], // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
        }); // 错误时
        wx.error(function (res) {
          alert("出错了:" + res.errMsg); //这个地方的好处就是wx.config配置错误,会弹出窗口哪里错误,然后根据微信文档查询即可。
        });
        // 成功
        // let ip = returnCitySN["cip"];
        // console.log('returnCitySN',returnCitySN)
        let order = this.getOrder();
        let extra = JSON.stringify({ openId: getToken("openId") });
        console.log("order", order);
        let resData = await apiPaying({
          channelId: "WX_JSAPI",
          storeId: this.$store.state.storeId,
          mchId: "**",
          mchOrderNo: order,
          amount: +this.myMoneyList * 100,
          subject: "***",
          body: "***",
          extra: extra,
        });

        console.log("dytata-------------openid", resData);
        this.wxPay = resData.data.payParams;
        let { timeStamp, nonceStr, signType, paySign } = resData.data.payParams;
        let package1 = resData.data.payParams.package;

        if (resData.code != 0) {
          this.$toast.fail("支付参数获取失败");
          return;
        }
        wx.ready(function () {
          wx.checkJsApi({
            jsApiList: ["chooseWXPay"],

            success: function (res1) {
              wx.chooseWXPay({
                timestamp: timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
                nonceStr: nonceStr, // 支付签名随机串,不长于 32 位
                package: package1,
                signType: signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
                paySign: paySign, // 支付签名
                success: function (res) {
                  // 支付成功后的回调函数
                  if (res.errMsg == "chooseWXPay:ok") {
                    //支付成功
                    alert("支付成功");
                    setTimeout(() => {
                      window.location.reload();
                    }, 2000);
                  } else {
                    alert(res.errMsg);
                  }
                },
                cancel: function (res) {
                  //支付取消
                  alert("支付取消");
                },
              });
            },
          });
        });
      } else {
        this.$toast.fail("微信配置失败");
      }
    },
对大家有帮助的话,点个赞谢谢,爱你们哦

相关案例查看更多