微信小程序——支付成功后更新订单为已支付

实现逻辑:

1.购买按钮绑定一个点击事件


首先是获取商品信息,我们使用consel窗口打印出他在数组goodlist中的位置。

之后,把这个数组内容中的信息赋值给order库中。

addorder(event){
  //  显示数组中的位置
   console.log(event)
   let index=event.currentTarget.dataset.index
   let orderid=Date.now()
   console.log(Date.now())
// 添加到数据库
wx.cloud.database().collection(buy_order).add(
  {
    // 增加的数据
    data:{
    orderid:orderid,
    title:this.data.goodslist[index].title,
    price:this.data.goodslist[index].price,
    num:this.data.goodslist[index].num,
    // -id是系统随机生成的不需要我们去指定。
    // _id:this.data.goodslist[index]._id,
    status:0,
    //是否订单已经支付的状态。
    time:util.formatTime(new Date())
    },
  }
).then(res=>{
  console.log(res)
  this.setData({
    order_id:res._id
  })

下一步,调用buy-pay函数,传递进入这个函数内容。

// 云函数入口文件
const cloud = require(wx-server-sdk)

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const res = await cloud.cloudPay.unifiedOrder({
    "body" : event.body,//商品描述??body是属性还是自定义好的。==是从event中传入的。
    "outTradeNo" : event.outTradeNo,//订单号
    "spbillCreateIp" : "127.0.0.1",//终端IP
    "subMchId" : "1621670684",//商户号
    "totalFee" : event.totalFee,//订单金额
    "envId": "pay-try-0gmo3urf4597ee3d",//云环境名称
    "tradeType":"JSAPI",//交易类型
    "functionName": "pay_cb" //调用云函数成功之后的回调函数
  })
  return res
}

调用 wx.requestPayment这个API,把从函数中得到的内容赋值给API中的参数。

wx.cloud.callFunction({
  name:buy-pay,
  // 向云函数传入参数
  data:{
    body:this.data.goodslist[index].title,
    // 这个地方要加一个单引号
    outTradeNo:orderid +, 
    // 这个地方必须是number类型
    totalFee:Number(this.data.goodslist[index].price) * 100
  }
}).then(res=>{
  console.log(res)
 this.pay(res.result.payment)
})
})
},

pay(payment){
  var that=this
  wx.requestPayment({
   //  依次进行赋值
  ...payment,
  success(res){
    console.log(res)
    // 把订单状态改变,当在订单页面显示时,可以显示出已支付
    // 数据库部分的内容是先进行查询,之后再更新
    wx.cloud.database().collection(buy_order).doc(that.data.order_id).update({
      data:{
        status:1
      },
      // 每一个函数调用成功之后,都可以加上一项success
      success(res){
        console.log(res)
        wx.showToast({
          title: 支付成功,
        })
      }

    })
  },
  fail(res){
   console.log(res)
   wx.showToast({
     title: 支付失败,
   })
  }

最后获取我们商品信息的-id然后数据库查询和更新。

wx.cloud.database().collection(buy_order).doc(that.data.order_id).update({
      data:{
        status:1
      },
经验分享 程序员 微信小程序 职场和发展