uni-app 最新HBuilderX打包后微信和支付宝支付app下失败 h5仍然有效 【已解决】
uni-app 最新HBuilderX打包后微信和支付宝支付app下失败 h5仍然有效 【已解决】
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:3.1.13
手机系统:Android
手机系统版本号:Android 10
手机厂商:华为
手机机型:pixel 4a
页面类型:vue
打包方式:云端
示例代码:
// APP支付
if((data.type == 'alipay' || data.type == 'wechat') && data.method == 'app'){
let provider = data.type;
if(data.type == 'wechat'){
provider = 'wxpay';
}
uni.requestPayment({
provider: provider,
orderInfo: res,
success: (e) => {
console.log("success", e);
this.paySuccess();
},
fail: (e) => {
uni.showModal({
content: this.lang.lang.user.money.recharge_error + e.errMsg,
showCancel: false
})
},
complete: () => {
this.loading = false;
this.disabled = false;
}
})
}
操作步骤:
- 使用最新的hbuilderx打包
- 在app内尝试微信和支付宝支付
预期结果:
- 正常跳转到微信和支付宝
实际结果:
- 未跳转,支付宝spinner转了一下后报错,微信直接报错
bug描述:
最新hbuilder打包后,app以前管用的微信和支付宝支付,现在不管用了,提示的错误也很模糊。
前一步orderInfo
{
"partner_order_id": "20210605033041000010059726_a4qw",
"full_name": "YOBOLINE SERVICES INC.",
"partner_name": "Coolkop",
"channel": "Wechat",
"sdk_params": {
"package": "Sign=WXPay",
"appid": "wxd66b2195089d8f15",
"sign": "9798B64667E4602EDF39D66298069968",
"partnerid": "443608615",
"prepayid": "wx05153042860500b60a8e19e49ce9c70000",
"noncestr": "qnIRSiKJ2ZrjYfErSb34HLzpEcxa1Y",
"timestamp": "1622878243"
},
"result_code": "SUCCESS",
"partner_code": "YWOFZA",
"order_id": "0619320210605073041985050",
"return_code": "SUCCESS"
}
原因:原来是要用sdk_params里的数据
更多关于uni-app 最新HBuilderX打包后微信和支付宝支付app下失败 h5仍然有效 【已解决】的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 最新HBuilderX打包后微信和支付宝支付app下失败 h5仍然有效 【已解决】的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题已定位:支付参数结构错误导致。在App端调用uni.requestPayment时,微信和支付宝支付需要直接传递sdk_params中的完整支付参数,而非外层订单数据。
修正后的核心代码:
uni.requestPayment({
provider: provider,
orderInfo: data.sdk_params, // 关键修改:直接使用sdk_params
success: (e) => {
this.paySuccess();
},
fail: (e) => {
console.log('支付失败:', e);
}
})

