大家好,欢迎来到IT知识分享网。
微信小程序云开发实现退款功能
官方文档
小程序云开发实现微信支付
官方文档非常的简单,也没有示例代码,只是列出了许多需要的参数,对于新手来说会可能有点迷糊。可以我的步骤跟着一步一步来。
一、获取退款API权限
在云开发控制台进行退款API权限的申请,然后在微信商户平台中进行授权。
二、代码开发
async onRefund(e) {
const model = await wx.showModal({
title: '提示',
content: '确认退款',
confirmText: '退款'
});
if (model.confirm) {
const totalN = new BigNumber(this.data.total_fee).times(100).toNumber();
wx.cloud.callFunction({
//调用cloudRefund云函数进行退款
name: 'cloudRefund',
data: {
nonce_str: this.nonce_str, //可以参考uuid()生成算法生成本字段
out_trade_no: this.data.out_trade_no, //支付时生成的out_trade_no ,生成函数可以参考我的微信支付文章
out_refund_no: this.out_refund_no, //此生成函数与out_trade_no生成方式大同小异,只要保证唯一性就可以
total_fee: totalN,
refund_fee: totalN,
},
success: (res) => {
console.log(res);
//更新订单信息
db.collection('orders').doc(this.orderId).update({
data: {
state: 4,
refundReason: this.data.radio,
refundReasonContent: this.data.content,
refundImgs: this.data.fileList.map(item => item.url),
refundDate: new Date()
}
})
wx.redirectTo({
url: '/pages/orderDetail/orderDetail?id=' + this.orderId,
});
},
fail: (err) => {
console.error(err);
wx.showToast({
title: '退款出错,请稍后再试',
});
}
})
}
},
cloudRefund()云函数
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const {
nonce_str, out_trade_no, out_refund_no, total_fee, refund_fee } = event
const res = await cloud.cloudPay.refund({
envId: "test-8g5u1cc1e82",
functionName: 'pay_cb', //自己创建云函数,可以是一个空的云函数,不需要做特别的处理
sub_mch_id: '', //在云开发控制台中查看
nonce_str,
out_trade_no,
out_refund_no,
total_fee,
refund_fee,
})
return res
}
outRefundNo() 生成out_refund_no
outRefundNo() {
const date = new Date();
let month = date.getMonth() + 1
if (month < 10) {
month = '0' + month;
}
let dates = date.getDate();
if (dates < 10) {
dates = '0' + dates;
}
let hour = date.getHours();
if (hour < 10) {
hour = '0' + hour;
}
let minute = date.getMinutes();
if (minute < 10) {
minute = '0' + minute;
}
let seconds = date.getSeconds();
if (seconds < 10) {
seconds = '0' + seconds;
}
let milliscondes = date.getMilliseconds();
if (milliscondes < 10) {
milliscondes = '00' + milliscondes;
} else if (milliscondes < 100) {
milliscondes = '0' + milliscondes;
}
let outRefundNo = '';
for (let i = 0; i < 5; i++) {
outRefundNo += Math.floor(Math.random() * 10);
}
outRefundNo = "RF" + date.getFullYear() + month +
dates + hour + minute + seconds + milliscondes + outRefundNo;
console.log(outRefundNo);
return outRefundNo;
},
自此微信小程序云开发实现退款功能。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12176.html