uni-app 官方的uni-pay插件调用refund方法时基本账户余额不足直接抛出异常不返回errCode

uni-app 官方的uni-pay插件调用refund方法时基本账户余额不足直接抛出异常不返回errCode

示例代码:

let refundResult = await uniPayInstance.refund(parameters);  
if (refundResult.returnCode === "SUCCESS" && refundResult.returnMsg === "OK") {  

} else {  
console.log("refundResult: " + JSON.stringify(refundResult));  
return {  
errCode: -1,  
errMsg: ""  
}  
}

在本地云函数调试中调用,当微信官方返回{"code":"FUNCTIONS_EXECUTE_FAIL","message":"NOTENOUGH 基本账户余额不足,请充值后重新发起\nError: NOTENOUGH 基本账户余额不足,请充值后重新发起\n"} 的时候,会直接报异常,而不会进入else执行。

操作步骤:

  • 微信支付基本账户里面没余额,前端操作退款。

预期结果:

  • 返回包装好的异常内容,便于前端判断和显示交互内容。

实际结果:

  • 接口不会返回包装好的返回值,而是直接抛出异常,前端直接进入异常处理,不符合前后端对接需求,无法正常显示交互信息。

bug描述:

  • 官方的uni-pay插件,调用refund方法的时候,如果基本账户余额不足,会直接抛出异常,而不是返回errCode。

| 信息类别       | 详情               |
|----------------|--------------------|
| 产品分类       | uniapp/H5          |
| PC开发环境     | Windows            |
| PC开发环境版本 | win8.1             |
| HBuilderX类型  | 正式               |
| HBuilderX版本  | 3.4.7              |
| 浏览器平台     | Chrome             |
| 浏览器版本     | 101.0.4951.67      |
| 项目创建方式   | HBuilderX          |

更多关于uni-app 官方的uni-pay插件调用refund方法时基本账户余额不足直接抛出异常不返回errCode的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 官方的uni-pay插件调用refund方法时基本账户余额不足直接抛出异常不返回errCode的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在使用 UniApp 官方的 uni-pay 插件时,如果调用 refund 方法时基本账户余额不足,插件可能会直接抛出异常而不返回 errCode。这种情况下,你可以采取以下几种方式来处理:

1. 捕获异常并处理

你可以使用 try...catch 语句来捕获异常,并在 catch 块中处理异常情况。虽然插件没有返回 errCode,但你可以通过捕获异常来判断是否是余额不足导致的错误。

try {
    await uniPay.refund({
        // 退款参数
    });
} catch (error) {
    console.error('退款失败:', error);
    if (error.message.includes('余额不足')) {
        // 处理余额不足的情况
        console.log('账户余额不足,请充值');
    } else {
        // 处理其他异常情况
        console.log('退款失败,其他原因:', error.message);
    }
}

2. 检查余额后再退款

在调用 refund 方法之前,你可以先检查账户余额,确保余额足够再进行退款操作。这样可以避免直接抛出异常。

const balance = await uniPay.getBalance();
if (balance < refundAmount) {
    console.log('账户余额不足,请充值');
} else {
    try {
        await uniPay.refund({
            // 退款参数
        });
    } catch (error) {
        console.error('退款失败:', error);
    }
}
回到顶部