uni-app微信支付返回-1错误及无法打开微信支付界面的问题
uni-app微信支付返回-1错误及无法打开微信支付界面的问题
翻了下论坛里面,到处都是问-1错误的,这里我把我自己踩过的坑分享一下,希望对大家开发微信支付有些帮助。
-
微信支付只支持打包之后安装到手机上进行测试,不支持真机调试,所以骚年们,打包之后再试吧
-
请在打包测试之前,一定要确认和官方的回调字符串是不是一模一样,参数键值不能多也不能少,为了确保成功还是相信官方不会忽悠你的!
这段代码是dcloud官方微信支付返回的字符串,大家可以把自己的字符串拿出来比对一下,确认一致,那就打包测试吧
{
"retcode": 0,
"retmsg": "ok",
"appid": "wx041********d61297",
"noncestr": "29dfdc1**d9c7ef283cad8ecb1448c8",
"package": "Sign=WXPay",
"partnerid": "123*****01",
"prepayid": "52010***0151019c3820473613388ca",
"timestamp": 1445239300,
"sign": "16a5efa393b50*****4d6d76e1b2ff703d27"
}
- 如果以上两点都已经确认没问题了但是还是无法吊起支付,那么就去微信开放平台https://open.weixin.qq.com/确认下你的应用签名和包名与你在平台上配置的签名和应用包名是不是相同吧,如何获取应用签名这个论坛里面有教材,实在不知道的去腾讯应用宝市场发布下应用,那里也有教程如何获取app的签名,微信开放平台签名修改之后需要等一段时间才会生效,所有如果确认是签名或者包名问题,下班之前再改吧,不然一天白瞎了
特别说一下,这里的签名是长度为32位的MD5字符串
-
ios和安卓在获取支付通道的时候有个现象,他们在支付通道数组对象里面的先后顺序不一样,如果你们在测试微信支付的时候报什么620XX错误,那就检查下支付通道对象获取的对不对
-
补充上面第三点,大家的证书在发布之前一定要换成自己的私有证书,用dcloud的公有虽然也没什么问题,但是一旦dcloud切换证书,之前发布的应用都会失效的,特别麻烦,这个只是个建议
针对您提到的uni-app微信支付返回-1错误及无法打开微信支付界面的问题,这通常与支付参数配置、调用流程或环境配置有关。以下是一些可能的解决方案及相关的代码示例,帮助您定位和解决问题。
1. 检查支付参数配置
确保您已经正确配置了微信支付的相关参数,包括appId、mchId、key、notify_url等。在uni-app中,这些参数通常会在支付初始化时传入。
// 示例:支付参数配置
const paymentOptions = {
timeStamp: '', // 支付签名时间戳
nonceStr: '', // 支付签名随机串
package: '', // 统一下单接口返回的 prepay_id 参数值,格式为 prepay_id=***
signType: 'MD5', // 签名方式,默认为 'SHA1',使用 'MD5' 签名时,本字段必须为 'MD5'
paySign: '', // 支付签名
appId: 'yourAppId', // 公众号APPID
mchId: 'yourMchId', // 商户号
};
2. 调用微信支付接口
确保在调用微信支付接口时,参数格式正确,且已经成功获取到预支付交易会话标识(prepay_id)。
// 示例:调用微信支付接口
uni.requestPayment({
...paymentOptions,
success: function (res) {
console.log('支付成功', res);
},
fail: function (err) {
console.error('支付失败', err);
if (err.errMsg === 'requestPayment:fail cancel') {
// 用户取消支付
} else if (err.errMsg === 'requestPayment:fail (参数错误|...)') {
// 其他支付错误,如参数错误、网络问题等
}
}
});
3. 检查环境配置
确保您的应用已经在微信支付商户平台配置了正确的支付目录,且当前访问的页面URL在该支付目录内。此外,还需要检查是否已经在微信开放平台或微信公众平台绑定了您的应用。
4. 调试与日志
在开发过程中,开启uni-app的调试模式,查看控制台输出的日志信息,有助于快速定位问题。同时,也可以在支付回调函数中打印更详细的错误信息,以便进一步分析。
5. 注意事项
- 确保微信支付SDK版本与uni-app框架版本兼容。
- 检查服务器端统一下单接口的返回值,确保所有参数均正确无误。
- 如果问题依旧存在,建议联系微信支付客服或查阅微信支付官方文档获取更多帮助。
通过上述步骤,您应该能够定位并解决uni-app微信支付返回-1错误及无法打开微信支付界面的问题。