调起微信支付报错,卡了两年半,期盼热❤码友帮助渡过难关

这是一个充值流量的页面。。

<view class="list">
  <view class="liulianglist {{liuliangid==item.name ? 'llselected':''}}" wx:for="{{list}}" wx:key="key" 
     bindtap='isSeleted' data-id="{{item.name}}">
    <view class=" lla">{{item.name}}view>
    <view class="llb">售价:¥{{item.price}}view>
    <view class="llc">{{item.remarks}}view>
  view>
view>
<view>
  <button class="but" type="primary" bindtap="chonzhi" style="width: 400rpx; height: 80rpx;">充值button>
view>

img

chonzhi() {
DB.collection('order').add({
   data: {
      //上传的订单数据,这里直接忽略十几行...。
     }
     })
     .then(res => {
     console.log("创建订单成功", res)

     //创建订单完成后,调起支付
     this.gopay(listi, res._id)
     })

////////////////////下面是云开发支付///////////////////////
gopay(id) {
    let listi = this.data.listi        // listi是选中充值套餐的数据
    wx.cloud.callFunction({
      name: 'lypay',
      data: {
        outTradeNo: id, //订单号
        goodName: listi.name,
        totalFee: listi.price
      },
      success: res => {
        console.log("获取支付参数成功", res)
        const payment = res.result.payment
        //调取支付
        wx.requestPayment({
          ...payment,
          success(res) {
            console.log('支付成功', res)
          },
          fail(err) {
            console.error('支付失败', err)
          }
        })
      },
      fail: res => {
        console.log("获取支付参数失败", res)
      },
    })
  },

img


点击支付后就提示:returnMsg: "参数格式校验错误"
这应该是没有获取到payment。

img


我在旧版页面写的是for循环列表里每组数据都有一个button,这样就能调取支付成功。下图中:上半部分就是旧版调取支付后打印的数据,里面payment正常。改成现在这种主要是觉得一个button按钮更美观些,没想到问题不断。对比发现payment这个地方有问题,应该是调取支付那段代码写错了,没有获取到数据。

img

//调用支付方法只传id试试
this.gopay(res._id)

我帮你看看到底哪里出问题了

img


你参数有问题啊,按照文档从新组一下吧