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
更多关于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);
}
}