uni-app unipay refund退款使用问题

发布于 1周前 作者 bupafengyu 来自 Uni-App

uni-app unipay refund退款使用问题

小白请教问题,使用uni pay中的下面函数,退款,结果报错说没有权限。查了以下文档,应该是要uni-id中需要设置权限。但是,并没有设置权限的教程。网上查找也没有解决方法。希望大神出一个手把手教学的教程。



| 信息类别 | 详情 |
| --- | --- |
| 开发环境 | 未提及 |
| 版本号 | 未提及 |
| 项目创建方式 | 未提及 |
9 回复

报错信息截图看下


感谢回答!我看uni pay的部分代码找到解决方案了。设置了用户权限,但是还需要获取新的tocken,才可以获得最新的用户权限。但是,又遇到其他问题。

16:55:50.668 [本地调试]Error: unsupported, POST https://api.mch.weixin.qq.com/secapi/pay/refund -1 (connected: false, keepalive socket: false, socketHandledRequests: 0, socketHandledResponses: 0) uni_modules/uni-pay/uniCloud/cloudfunctions/uni-pay-co/service/pay.js:608:11 16:55:50.668 [本地调试]headers: {} 16:55:50.669 [本地调试] at configSecureContext (node:internal/tls/secure-context:281:15) 16:55:50.669 [本地调试] at Object.createSecureContext (node:_tls_common:117:3) 16:55:50.669 [本地调试] at Object.connect (node:_tls_wrap:1750:48) 16:55:50.670 [本地调试] at Agent.createConnection (node:https:158:22) 16:55:50.670 [本地调试] at Agent.createSocket (node:_http_agent:341:26) 16:55:50.670 [本地调试] at Agent.addRequest (node:_http_agent:288:10) 16:55:50.671 [本地调试] at new ClientRequest (node:_http_client:342:16) 16:55:50.671 [本地调试] at Object.request (node:https:366:10)

证书都配置好了,用的是 v2。目前没有找到解决方案

回复 3***@qq.com: 改成v3,目前node18不支持v2版本的微信支付的退款API了,因为p12证书的格式被node18废弃了

回复 DCloud_uniCloud_VK: 好的,十分感谢

感谢回答!我看uni pay的部分代码找到解决方案了。设置了用户权限,但是还需要获取新的tocken,才可以获得最新的用户权限。但是,又遇到其他问题。
16:55:50.668 [本地调试]Error: unsupported, POST https://api.mch.weixin.qq.com/secapi/pay/refund -1 (connected: false, keepalive socket: false, socketHandledRequests: 0, socketHandledResponses: 0) uni_modules/uni-pay/uniCloud/cloudfunctions/uni-pay-co/service/pay.js:608:11 16:55:50.668 [本地调试]headers: {} 16:55:50.669 [本地调试] at configSecureContext (node:internal/tls/secure-context:281:15) 16:55:50.669 [本地调试] at Object.createSecureContext (node:_tls_common:117:3) 16:55:50.669 [本地调试] at Object.connect (node:_tls_wrap:1750:48) 16:55:50.670 [本地调试] at Agent.createConnection (node:https:158:22) 16:55:50.670 [本地调试] at Agent.createSocket (node:_http_agent:341:26) 16:55:50.670 [本地调试] at Agent.addRequest (node:_http_agent:288:10) 16:55:50.671 [本地调试] at new ClientRequest (node:_http_client:342:16) 16:55:50.671 [本地调试] at Object.request (node:https:366:10)
证书都配置好了,用的是 v2。目前没有找到解决方案

我的用户体系没用uni-id,可以修改下面文件的内容 uni-pay-co/config/permission.js

关于uni-app中unipay插件进行退款操作的问题,下面是一个具体的代码案例,展示了如何在uni-app中使用unipay进行退款。请确保你已经正确安装并配置了unipay插件,并且已经获取了必要的退款参数,如订单号、退款金额等。

首先,确保你的uni-app项目中已经引入了unipay插件。如果尚未引入,可以在manifest.json中添加相关依赖。

以下是退款功能的代码示例:

// 引入unipay插件
const unipay = uni.requireNativePlugin('uni-pay');

// 退款函数
function refund(orderId, refundAmount, callback) {
  // 构造退款参数
  const refundParams = {
    orderId: orderId, // 订单号
    refundAmount: refundAmount, // 退款金额
    // 其他可能的退款参数,根据unipay插件的文档添加
    // 例如:reason, currency等
  };

  // 调用unipay插件的退款接口
  unipay.refund(refundParams, (res) => {
    if (res.code === 0) {
      // 退款成功
      console.log('退款成功:', res.data);
      callback(null, res.data);
    } else {
      // 退款失败
      console.error('退款失败:', res.errMsg);
      callback(new Error(res.errMsg));
    }
  });
}

// 使用示例
const orderId = 'your_order_id'; // 替换为你的订单号
const refundAmount = 100; // 替换为你要退款的金额

refund(orderId, refundAmount, (err, data) => {
  if (err) {
    // 处理退款失败的情况
    uni.showToast({
      title: '退款失败',
      icon: 'none',
    });
    console.error(err);
  } else {
    // 处理退款成功的情况
    uni.showToast({
      title: '退款成功',
      icon: 'success',
    });
    console.log('退款详情:', data);
  }
});

在上述代码中,我们首先引入了unipay插件,然后定义了一个refund函数,该函数接受订单号、退款金额和一个回调函数作为参数。在函数内部,我们构造了退款参数,并调用了unipay插件的refund接口。根据接口的返回结果,我们通过回调函数处理退款成功或失败的情况。

请注意,上述代码是一个基本示例,实际使用时可能需要根据unipay插件的具体文档调整退款参数和处理逻辑。此外,确保你的应用已经获得了进行支付和退款操作所需的权限和配置。

回到顶部