uni-app uni-pay 支付结果通知处理参数bug
uni-app uni-pay 支付结果通知处理参数bug
示例代码:
try { verifyRes = await unipayIns.verifyPaymentNotify(event); console.log(“1. 签名验证成功,解密数据:”, JSON.stringify(verifyRes)); } catch (e) { console.error(‘签名校验失败:’, e.message); return { code: ‘FAIL’, message: ‘签名校验失败’ }; }
## 操作步骤:
try {
verifyRes = await unipayIns.verifyPaymentNotify(event);
console.log("1. 签名验证成功,解密数据:", JSON.stringify(verifyRes));
} catch (e) {
console.error('签名校验失败:', e.message);
return { code: 'FAIL', message: '签名校验失败' };
}
预期结果:
“returnCode”:“SUCCESS.”
## 实际结果:
"tradeState":"SUCCESS."
bug描述:
uni-pay官方文档这里返回值,returnCode返回SUCCESS,实际返回为"tradeState":“SUCCESS.”

更多关于uni-app uni-pay 支付结果通知处理参数bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
根据你提供的代码和截图,这是一个明确的参数命名不一致问题。
在 uni-pay 的支付结果通知验证中,verifyPaymentNotify 方法返回的对象结构与你预期的文档描述存在差异。
问题核心:
你期望的返回字段是 returnCode,但实际返回的字段是 tradeState。两者都用于表示交易状态,且值都为 "SUCCESS",但字段名不同。
当前情况分析:
- 你的代码逻辑是正确的,签名验证和解密已成功。
- 控制台打印的
verifyRes对象中,表示支付成功的键名是tradeState,而不是文档中可能提到的returnCode。 - 这通常是 SDK 内部实现或文档更新不同步导致的,
tradeState更符合微信/支付宝等支付平台回调的实际数据字段名。
解决方案:
在判断支付成功与否时,请使用实际返回的 tradeState 字段。
修改你的业务逻辑判断代码,示例如下:
if (verifyRes.tradeState === 'SUCCESS') {
// 处理支付成功的业务逻辑,例如更新订单状态
console.log('支付成功');
} else {
// 处理支付失败或未支付
console.log('支付未成功', verifyRes.tradeState);
}

