解决微信小程序原生云开发退款报错“特约子商户商户号未授权服务商的产品权限”的问题

背景:微信小程序云开发支付没问题,退款时就会报这个错。

现象:

解决方法流程:

1、打开微信小程序开发者工具上面的云开发界面:

2、进入设置:

3、其他设置:

需要授权退款API权限,我这里已经授权了,未授权的话会有授权按钮,点击后会提示等待商户审核

4、我们来到微信支付商户后台:

授权后就可以使用退款的API了。

最后补一下退款的官方文档和我的传参:

文档:
developers.weixin.qq.com/minigame/de...

参数最关键的是要记录下来商户订单号,这个商户订单号是在发起支付时我们自己生成的,在我们自己的系统内保持唯一即可。

我的参数:

csharp 复制代码
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也是在微信小程序云开发查看,依次点开云开发、设置、其他设置:

生成随机数的函数:

ini 复制代码
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】,欢迎大家订阅,我会同步文章到公众号上。

相关推荐
同志327131 小时前
用HTML+CSS做了一个网易云音乐客户端首页
前端·css
小猪欧巴哟1 小时前
pnpm install 安装项目依赖遇到 illegal operation on a directory, symlink 问题
前端·vue.js
独角仙梦境1 小时前
🚀🚀🚀学习这个思路,你也能手撸自己的专属vip脚手架🚀🚀🚀
前端
CJWbiu1 小时前
Github Action + docker 实现自动化部署
前端·自动化运维
关山1 小时前
在TS中如何在子进程中动态实例化一个类
前端
吃瓜群众i1 小时前
兼容IE8浏览器的8个实用知识点
前端·javascript
前端烨1 小时前
vue3子传父——v-model辅助值传递
前端·vue3·组件传值
Mintopia1 小时前
Three.js 在数字孪生中的应用场景教学
前端·javascript·three.js
夕水2 小时前
自动化按需导入组件库的工具rust版本完成开源了
前端·rust·trae
JarvanMo3 小时前
借助FlutterFire CLI实现Flutter与Firebase的多环境配置
前端·flutter