背景:微信小程序云开发支付没问题,退款时就会报这个错。
现象:
解决方法流程:
1、打开微信小程序开发者工具上面的云开发界面:
2、进入设置:
3、其他设置:
需要授权退款API权限,我这里已经授权了,未授权的话会有授权按钮,点击后会提示等待商户审核
4、我们来到微信支付商户后台:
授权后就可以使用退款的API了。
最后补一下退款的官方文档和我的传参:
文档:
参数最关键的是要记录下来商户订单号,这个商户订单号是在发起支付时我们自己生成的,在我们自己的系统内保持唯一即可。
我的参数:
let cloud = cloudBase.getCloud();
let refund_fee_type = 1; // 金额单位为分 1就是退款1分钱 100就是退款1块钱
const refund_params = {
functionName: 'mcloud', // 这个函数名自己系统内的
envId: config.CLOUD_ID, // 环境id
sub_mch_id: config.SUBMCH_ID, // 子商户id 下面有说明在哪获取
nonce_str: this.generateRandomString(), // 这里自己生成一个随机数就行,生成随机数的方法我下面也会提供
out_trade_no: order.out_trade_no, // 支付时自己系统生成的商户订单号,需要在支付的时候存到订单表里,然后退款时从订单表里取出这个字段
out_refund_no: this.generateRandomString(), // 商户退款单号,也是自己随机生成一个就行,用来查询退款情况用,比如退款成功还是失败
total_fee: refund_fee_type, // 订单金额 单位:分
refund_fee: refund_fee_type, // 申请退款金额,用户实际到账的金额 单位:分
refund_desc: "手动取消",// 退款理由,界面显示效果如下
}
const res = await cloud.cloudPay.refund(refund_params);
envId在微信小程序点开云开发就能看到:
sub_mch_id也是在微信小程序云开发查看,依次点开云开发、设置、其他设置:
生成随机数的函数:
generateRandomString(length = 32) {
let result = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
退款理由的界面显示效果:
这篇分享文章就到这里啦!如果你对文章内容有疑问或想要深入讨论,欢迎在评论区留言,我会尽力回答。同时,如果你觉得这篇文章对你有帮助,不妨点个赞并分享给其他同学,让更多人受益。
想要了解更多相关知识,可以查看我以往的文章,其中有许多精彩内容。记得关注我,获取及时更新,我们可以一起学习、讨论技术,共同进步。
感谢你的阅读与支持,期待在未来的文章中与你再次相遇!
我的微信公众号:【xdub】,欢迎大家订阅,我会同步文章到公众号上。