yiming
2024-03-25 ecabd20b3dfbd956dad14ffb6ba3dc2efcfdd7c1
pages/cart/paymentPage/index.js
@@ -15,20 +15,15 @@
    purchasedIds: [],
    productList: [],
    payPrice: '',
    drawQrcodeText: 'https://www.baidu.com/',
    orderGoods: '',
    confirmBtn: { content: '确定', variant: 'base' },
    dialogKey: 'false',
    isPaySuccess: false,
    isPayComplete: false,
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const systInfo = wx.getSystemInfoSync();
    const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息
    const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度
@@ -39,44 +34,7 @@
      selectedIds: options.selectedIds
    })
    console.log('接收到的订单号:', this.data.orderNumber);
    this.getOrderByOrderNum()
    drawQrcode({
      width: 200, // 必须,二维码宽度,与canvas的width保持一致
      height: 200, // 必须,二维码高度,与canvas的height保持一致
      canvasId: 'myQrcode',
      background: '#ffffff', //   非必须,二维码背景颜色,默认值白色
      foreground: '#2bb15e', // 非必须,二维码前景色,默认值黑色    '#000000'
      // ctx: wx.createCanvasContext('myQrcode'), // 非必须,绘图上下文,可通过 wx.createCanvasContext('canvasId') 获取,v1.0.0+版本支持
      text: this.data.drawQrcodeText,  // 必须,二维码内容
      // v1.0.0+版本支持在二维码上绘制图片
      image: {
        // imageResource: '../../images/icon.png', // 指定二维码小图标
        dx: 70,
        dy: 70,
        dWidth: 60,
        dHeight: 60
      }
    })
  },
  /**
@@ -143,6 +101,7 @@
      }
    }
    app.MG.store.getOrderByOrderNum(query).then(res => {
      console.log(res, 'res');
      this.setData({
        orderGoods: res.orderNumber
      })
@@ -155,46 +114,71 @@
      res.saleMethodLinks.forEach(item => {
        item.paymentIcon = getPublicImage(item.orderSaleMethod.product.icon)
        console.log(item.orderSaleMethod.type);
        this.setData({
          productList: res.saleMethodLinks
          productList: res.saleMethodLinks,
          type: item.orderSaleMethod.type == 'createProductItemSaleMethod' ? 'item' : 'product'
        })
      })
    })
  },
  confirmOrderGet() {
    var that = this;
    let query = {
      orderNum: this.data.orderGoods
    }
    app.MG.store.confirmOrder(query).then(res => {
      this.makeWeChatQrPayGet()
      console.log(res.orderNumber, 'res');
      if (res.orderNumber) {
        const resOrderNum = {
          orderNum: res.orderNumber,
        };
        // 用户未绑定微信 报500
        app.MG.store.makeWeChatPay(resOrderNum).then(payRes => {
          const payVal = JSON.parse(payRes);
          wx.requestPayment({
            "appId": payVal.appId,
            "timeStamp": payVal.timeStamp,
            "nonceStr": payVal.nonceStr,
            "package": payVal.package,
            "signType": payVal.signType,
            "paySign": payVal.paySign,
            success: function (res) {
              console.log('支付成功');
              if (res.errMsg == 'requestPayment:ok') {
                that.setData({
                  isPaySuccess: true
                })
              }
            },
            fail: function (res) {
              console.log('支付失败');
            },
            // 无论支付成功失败都会调用
            "complete": function (res) {
              if (res.errMsg == 'requestPayment:ok') {
                that.setData({
                  isPayComplete: true
                })
              }
              if (that.data.isPaySuccess && that.data.isPayComplete) {
                that.navToBack()
              }
            }
          });
        })
      }
    })
    // 调取微信二维码支付
  },
  // 页面返回
  navToBack() {
    // 返回
    wx.navigateBack()
  },
  // 调取微信二维码支付
  makeWeChatQrPayGet() {
    let query = {
      orderNum: this.data.orderGoods
    }
    app.MG.store.makeWeChatQrPay(query).then((res) => {
      this.setData({
        drawQrcodeText: res
      })
      this.data.dialogKey = true
      console.log(this.data.drawQrcodeText, 'drawQrcodeText');
    })
  },
  showDialog(e) {
    const { key } = e.currentTarget.dataset;
    this.setData({ [key]: true, dialogKey: key });
  },
  closeDialog() {
    const { dialogKey } = this.data;
    this.setData({ [dialogKey]: false });
  },
})