console.log('执行refund')
// const { out_trade_no } = data;
// console.log(out_trade_no)
// var payStatus = '' //如果支付状态码不存在的话 会默认为4 已取消的状态
//1.启动关闭订单微信支付函数 微信支付侧也要进行关闭
const { return_code, ...restData } = await pay.refund({
out_trade_no:'oIouB4s-1605164591771', //商户订单号
out_refund_no:`refund_oIouB4s-1605164591771`, //商户退款单号 //多次退款需要用不同的退款单号,这里先只考虑退一次
total_fee:1, //订单金额
refund_fee:1, //退款金额
});
附上报错的图片
报错的函数出处
通过打印,获得上面函数 xmlStr的值如下图
官方文档退款链接为:https://api.mch.weixin.qq.com/secapi/pay/refund 好像打开也是这个错误,说什么要证书,大概是这个接口在云开发中不能用了吧。
附上pay.refund 的出处
其中,用到的退款字段 都拥有了,出处在下图
求助各位大佬,帮忙看看,难道是官方的集成出了问题吗?
方法二尝试:
后来我又用了网上这篇文章的https://blog.csdn.net/weixin_44700966/article/details/108338940 api退款方式,但是每次查询出来的就说订单不存在,实际上是存在的
潜在背景:生成的订单不是通过服务商模式生成的,也许就是提示订单不存在。我知道为什么了,明天试试。
// 申请退款 客户买完后,后悔了 全额退款 或者 我们官方售后,对其进行部分退款
case 'refund':{
console.log('执行refund')
const { out_trade_no } = data;
console.log(out_trade_no)
// var payStatus = '' //如果支付状态码不存在的话 会默认为4 已取消的状态
//1.启动关闭订单微信支付函数 微信支付侧也要进行关闭
const { return_code, ...restData } = await cloud.cloudPay.refund({
sub_mch_id:MCHID, //子商户号
out_trade_no, //商户订单号
nonce_str:'63wiIZm2APFdYhNw',
out_refund_no:`refund_${out_trade_no}`, //商户退款单号 //多次退款需要用不同的退款单号,这里先只考虑退一次
total_fee:1, //订单金额
refund_fee:1, //退款金额
});
console.log(return_code)
console.log(restData)
return
}
我这样写为什么提示我订单不存在呢?是不是因为mchid不是我们的?但是 强行写成我们的也不会改过来。授权啥的都开了。
以下这张图是在微信商户助手中查到的
我好像知道方法二为什么说订单不存在了,采用了方法二相当于是使用了云开发平台作为服务商,那么生成的订单必须是经过服务商生成的才会提示订单存在。之前用的最早的官方pay.*之类的都要换成服务商的接口调用,或许就可以了。明天试试。