需求:活动每个成员先预付活动费,当活动结束后退还部分多出来的费用,也就是多退少补。
困惑:目前使用退款接口填入订单一半的退款金额,但还是会全退,请问微信有途径实现这个需求吗?
下面是我退部分金额的代码,请指教:
//小程序端
/**
* 退款
*/
refund: function () {
var that = this;
// 获取、设置支付参数
let nonceStr = getRandomNumber() + '' // 随机数
let out_trade_no = this.data.orderId // 商户端订单号
let totalFee = this.data.order.cost * 100 //订单总金额,数据库是以“元”为单位,接口以“分”为单位
let refund_fee = this.data.order.cost/2 * 100 //退款金额,订单总金额的一半
let params = {
nonceStr,
out_trade_no,
totalFee,
refund_fee
}
console.log(params)
//请求退款
wx.showLoading()
wx.cloud.callFunction({
name: 'gameOrderApi',
data: {
action: 'refund',
params: params,
},
success: res => {
console.log(res)
if (res.result.resultCode == 'SUCCESS' && res.result.returnCode == 'SUCCESS') {
wx.showModal({
title: '退款成功',
content: '退款金额:' + res.result.refundFee / 100 + ' 元'
})
} else {
wx.showModal({
title: '错误信息',
content: res.result.errCodeDes
})
}
},
fail: err => { console.log(err) },
complete: () => { wx.hideLoading() }
})
})
//云函数gameOrderApi:
case 'refund':
console.log(event.params)
const res = await cloud.cloudPay.refund({
"functionName":"wxpayCallback",
"envId":"test-urupk",
"subMchId":"1080438595",
"nonceStr":event.params.nonceStr, //随机字符串
"out_trade_no": event.params.out_trade_no, //商户订单号
"out_refund_no" : event.params.out_trade_no+"re",//商户退款单号
"totalFee" : event.params.totalFee, //订单总金额(单位:分)
"refund_fee":event.params.refund_fee,//申请退款金额
})
console.log(res)
return res
使用姿势不对,退款接口是可以退部分,而且可以退多次。