解决微信小程序原生云开发退款报错“特约子商户商户号未授权服务商的产品权限”的问题
背景:微信小程序云开发支付没问题,退款时就会报这个错。
现象:

解决方法流程:
1、打开微信小程序开发者工具上面的云开发界面:

2、进入设置:

3、其他设置:

需要授权退款API权限,我这里已经授权了,未授权的话会有授权按钮,点击后会提示等待商户审核
4、我们来到微信支付商户后台:

授权后就可以使用退款的API了。
最后补一下退款的官方文档和我的传参:
文档:
https://developers.weixin.qq.com/minigame/dev/wxcloud/reference-sdk-api/open/pay/CloudPay.refund.html
参数最关键的是要记录下来商户订单号,这个商户订单号是在发起支付时我们自己生成的,在我们自己的系统内保持唯一即可。
我的参数:
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】,欢迎大家订阅,我会同步文章到公众号上。
解决微信小程序原生云开发退款报错“特约子商户商户号未授权服务商的产品权限”的问题的更多相关文章
- Slog71_选取、上传和显示本地图片GET !(微信小程序之云开发-全栈时代3)
ArthurSlog SLog-71 Year·1 Guangzhou·China Sep 12th 2018 ArthurSlog Page GitHub NPM Package Page 掘金主页 ...
- 微信小程序--使用云开发完成支付闭环
微信小程序--使用云开发完成支付闭环 1.流程介绍 2. 代码实现和逻辑思想描述 云函数统一下单 对应云函数 unipay [CloudPay.unifiedOrder] 函数思路 : 调用云函数封装 ...
- 微信小程序之云开发一
最近听说微信小程序发布了云开发,可以不需要购买服务器,就能开发小程序和发布小程序,对于动辄千元的服务器,极大的节约了开发成本,受不住诱惑,我就开始了小程序的云开发,目前项目已上线,亲测不收费,闲不住的 ...
- 微信小程序知识云开发
一个小程序最多5个服务类目,一个月可以修改3次类目 小程序侵权投诉的发起与应对 软件著作权作品登记证书 实现小程序支付功能 如何借助官方支付api简单.高效率地实现小程序支付功能 借助小程序云开发实现 ...
- 微信小程序与云开发
微信小程序基础概念 小程序云开发的三大基础能力:云数据库.云函数.云存储 Java.NodeJS.JavaScript.HTML5.CSS3.VueJs.ReactJs.前端工程化.前端架构 小程序开 ...
- 当微信小程序遇到云开发,再加上一个类似 ColorUI 的模板,人人都能做小程序了
作为一个 Java 程序员,早就想尝试一把微信小程序,但是一直苦于没有想法,再加上做一个漂亮的页面实在不太擅长. 由于自己比较喜欢历史,经常看历史方面的书.在一次梳理中国现有的朝代时,突然想到,要是可 ...
- 微信小程序诡异错误this.setData报错
先说原因: function声明的函数和箭头函数的作用域不同,这是一个不小心坑的地方.可参考箭头函数说明:https://developer.mozilla.org/en-US/docs/Web/Ja ...
- 微信小程序 app.js globalData 赋值报错
//success方法要用用success: res => {}的格式 success: res => { } //赋值报错 success:function(e){ } //报错内容: ...
- 解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的
解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的 .chart{ width: 100%; text-align: center; } .canvas{ ...
- 如何解决微信小程序界面适配问题-引用-生命周期回调函数-优化机制-样式引入
如何解决微信小程序界面适配问题 .wxss page{ height: 100%; width:750rpx; } this.setData({ imageWidth: wx.getSystemInf ...
随机推荐
- 2024御网杯信息安全大赛个人赛wp_2024-11-27
MISC题解 题目附件以及工具链接: 通过网盘分享的文件:御网杯附件 链接: https://pan.baidu.com/s/1LNA6Xz6eZodSV0Io9jGSZg 提取码: jay1 --来 ...
- dotnet core微服务框架Jimu ~部署和调用演示
首先运行 consul 下载 consul 以开发模式运行 consul agent -dev 2. 调试 用 Visual Studio 2022 IDE 打开项目: 右击解决方案-选择" ...
- uniapp使用EventBus实现页面间数据传递
前情 最近在做小程序项目,选用是当前比较火的uniapp技术栈,经常会遇到页面间消息传递的需求. 为什么要这么做? uniapp页面间数据通信方式有很多:通过url传参,状态管理库vuex/pinia ...
- 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-7-元素基础定位方式-下篇 (详细教程)
1.简介 上一篇主要是讲解我们日常工作中在使用Playwright进行元素定位的一些比较常用的基础定位方式的理论基础知识以及在什么情况下推荐使用.今天这一篇讲解和分享一下剩下部分的基础定位方式. 2. ...
- 给我2分钟,保证教会你在Vue3中实现一个定高的虚拟列表
前言 虚拟列表对于大部分一线开发同学来说是一点都不陌生的东西了,有的同学是直接使用第三方组件.但是面试时如果你简历上面写了虚拟列表,却给面试官说是通过三方组件实现的,此时空气可能都凝固了.所以这篇文章 ...
- jenkins集群 - HTMLreport测试报告
一.安装 HTML Publisher plugin 插件 插件下载地址 二.配置构建后步骤 三.编辑报告执行脚本 四.安装 Startup Trigger 和 Groovy 插件 1.安装原因: J ...
- 解决编译redis报错zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory
编译redis时报错:zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory,执行: # sudo m ...
- SPRING BOOT 项目中使用<SCOPE>PROVIDED</SCOPE>打包成WAR到TOMCAT运行出现的问题总结
大家知道 spring boot 项目是自带tomcat 的,但是我们有时候是需要把项目打包成war 然后放到独立的tomcat中运行的,这个时候我们就需要将它自带的tomcat给排除开,这时候我们就 ...
- java正则表达式(find()和 matches())
1.find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数. matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为 ...
- Qt编写物联网管理平台45-采集数据转发
一.前言 本系统严格意义上说是一个直连硬件的客户端软件,下面接的modbus协议的设备直接通过网络或者串口和软件通信,软件负责解析数据和存储记录.有时候客户想要领导办公室或者分管这一块的部门经理办公室 ...