微信小程序支付实现

前端、公司后端、微信后端调用关系图:

代码实现:

app.js:

//app.js
App({
  http: require('/api/request.js'),
  IMG_BASE: "https://hydrogen-applet.derunht.cn/applet",
  // IMG_BASE: "http://192.168.100.11:15970/applet",
  onLaunch: function () {
    this.calcNavBarInfo(); //计算导航栏信息
    this.getLogin(); //获取微信登录信息openid
  },
  globalData: {
    //全局数据管理
    navBarHeight: 0, // 导航栏高度
    menuBottom: 0, // 胶囊距底部间距(顶部间距也是这个)
    menuHeight: 0, // 菜单按钮栏(标题栏)的高度
    statusBarHeight: 0, //  状态栏高度
  },
  //计算导航栏信息
  calcNavBarInfo() {
    // 获取系统信息
    const systemInfo = wx.getSystemInfoSync();
    // 胶囊按钮位置信息
    const menuButtonInfo = wx.getMenuButtonBoundingClientRect();
    // 状态栏高度
    this.globalData.statusBarHeight = systemInfo.statusBarHeight
    // 导航栏高度 = 状态栏到胶囊的间距(胶囊上坐标位置-状态栏高度) * 2 + 胶囊高度 + 状态栏高度
    this.globalData.navBarHeight = (menuButtonInfo.top - systemInfo.statusBarHeight) * 2 + menuButtonInfo.height + systemInfo.statusBarHeight;
    // 状态栏和菜单按钮(标题栏)之间的间距
    // 等同于菜单按钮(标题栏)到正文之间的间距(胶囊上坐标位置-状态栏高度)
    this.globalData.menuBottom = menuButtonInfo.top - systemInfo.statusBarHeight;
    // 菜单按钮栏(标题栏)的高度
    this.globalData.menuHeight = menuButtonInfo.height;
  },
  //获取微信登录信息openid
  getLogin() {
    let thisT = this;
    wx.login({
      success(res) {
        if (res.code) {
          let params = {
            code: res.code
          }
          thisT.http.getOpenid(params).then(res => {

            if (res.code == 200) {
              wx.setStorageSync('openid', res.data.openid)
            } else {
              wx.showToast({
                title: res.msg,
                icon: 'none',
                duration: 2000
              });
            }
          })
        } else {
          console.log('登录失败!' + res.errMsg)
        }
      }
    })
  }
})

页面代码:


  // 支付
  payMethod() {
      let params = {
        openId: wx.getStorageSync('openid'),
        deviceId: this.data.mn,
        productId: this.data.nowPriceId,
      }
      app.http.payParams(params).then(res => {
        if (res.code == 200) {
          this.payWeiXin(res.data);  //调取微信支付
          this.setData({
            orderId: res.data.orderId, //订单号
          })
        } else {
          wx.showToast({
            title: res.msg,
            icon: 'none',
            duration: 2000
          });
        }
      })
  },
  //调取微信支付
  payWeiXin(obj) {
    let thisT = this;
    //调用微信官方支付接口弹出付款界面,输入密码扣款
    wx.requestPayment({
      timeStamp: obj.timeStamp, //后端返回的时间戳
      nonceStr: obj.nonceStr, //后端返回的随机字符串
      package: obj.prepayId, //后端返回的prepay_id
      signType: 'MD5', //后端签名算法,根据后端来,后端MD5这里即为MD5
      paySign: obj.paySign, //后端返回的签名
      success(res) {
        //支付成功后
      },
      fail(res) {}
    })
  },

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BMG-Princess

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值