微信小程序调用微信支付

139 阅读1分钟
    async goToPay() {
      //先利用地址信息里的用户名判断是否有,没有直接return并给出提示
      if (!this.userAddress.userName) {
        uni.showToast({
          title: '请先选择地址~',
          icon: 'none'
        })
        return
      }
      //调用官方提供的getUserInfo接口获取数据并结构,获取四个必要信息
      const [err, { encryptedData, rawData, signature, iv }] = await uni.getUserInfo()
      //获取code
      const [error, { code }] = await uni.login()
      //把获取到的四个数据和code组合
      const data = {
        encryptedData,
        rawData,
        signature,
        iv,
        code
      }
      return
      //#region
      //把组合好的数据调用封装好的接口并传入
      const [tokenError, userInfores] = await requestUserToken(data)
      //判断如果没有数据直接return
      if (!userInfores.message) return
      //有数据直接把整个对象存入vuex
      this.$store.commit('setUserInfo',userInfores.message)
      console.log(userInfores)
      const token = userInfores.message;
      //把订单数据地址商品等调用封装好的接口传给后端
      const [orderError, res] = await createOrder({
        order_price: this.totalPrice,
        consignee_addr: this.detailAddress,
        goods: this.checkedList.map(item => {
          return {
            goods_id: item.goods_id,
            goods_numer: item.goods_count,
            goods_price: item.goods_price
          }
        })
      })
      //取出order_number
      const { order_number } = res.message
      //传出order_number(订单号)给后端
      const payInfoRes = await getPayParams(order_number)
      //取出pay
      const { pay } = payInfoRes.message
      //调用微信官方的wx.requestPayment并传出pay
      const { errMsg } = await wx.requestPayment(pay)
      //传出order_number给后端,查询订单支付状态
      const orderCheckRes = await queryPaymentStatus(order_number)
      //成功给出提示!
      uni.showToast({
        title: '支付成功!',
        icon: 'success',
        mask: true
      })
      //#endregion
    },
//创建订单
export function createOrder(data) {
  return request({
    url: '/my/orders/create',
    method: 'POST',
    header: {
      Authorization: uni.getStorageSync('userInfo').token
    },
    data
  })
}

//获取支付参数
export function getPayParams(order_number) {
  return request({
    url: '/my/orders/req_unifiedorder',
    method: 'POST',
    header: {
      Authorization: uni.getStorageSync('userInfo').token
    },
    data: {
      order_number: order_number
    }
  })
}

//查询订单支付状态
export function queryPaymentStatus(order_number) {
  return request({
    url: '/my/orders/chkOrder',
    method: 'POST',
    header: {
      Authorization: uni.getStorageSync('userInfo').token
    },
    data: {
      order_number: order_number
    }
  })
}
//请求用户信息和token
const requestUserToken = function (data) {
  return request({
    url: '/users/wxlogin',
    method: 'POST',
    data
  })
}