这是一个充值流量的页面。。
<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>
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)
},
})
},
点击支付后就提示:returnMsg: "参数格式校验错误"
这应该是没有获取到payment。
我在旧版页面写的是for循环列表里每组数据都有一个button,这样就能调取支付成功。下图中:上半部分就是旧版调取支付后打印的数据,里面payment正常。改成现在这种主要是觉得一个button按钮更美观些,没想到问题不断。对比发现payment这个地方有问题,应该是调取支付那段代码写错了,没有获取到数据。