欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

uni-app支付报错“errMsg“: “requestPayment:fail errors“;调不起微信;返回-1

程序员文章站 2024-01-22 11:11:22
...

1:“errMsg”: “requestPayment:fail errors”

uni-app 报 “errMsg”: “requestPayment:fail errors”,调不起微信,返回 -1 大部分原因出在包名,签名,和参数部分为空。

						var orderInfo = {
							"appid":res.map.appid,
							"noncestr":res.map.nonceStr,
							"package":res.map.package,
							"partnerid":res.map.partnerid,
							"prepayid":res.map.prepayid,
							"timestamp":res.map.timestamp,
							"sign":res.map.sign
						}
						uni.requestPayment({
						    provider: 'wxpay',
						    orderInfo: orderInfo, //微信、支付宝订单数据
						    success: function (res) {
								console.log("微信调起支付成功")
						        console.log(res); 
						    },
						    fail: function (err) {
								console.log("微信调起支付失败")
						        console.log(err);
						    }
						});
1.1:为空判断

首先,你必须确定appid,noncestr,package,partnerid,prepayid,timestamp,sign 都不为空或者不为undefind。

上传之前打印一下,确保每个参数都不为空(先不考虑其正确性)。

1.2:参数类型(orderInfo)

如果是微信支付,上传参数需要是 Object 对象,而不能是 String 类型。

不然可能只会出现一个加载框,就是不跳转到支付页面。

  • App端,支付宝支付 orderInfo 为 String 类型。
  • App端,微信支付 orderInfo 为 Object 类型。
1.3:包名和签名

包名和签名需要在微信开放平台配置,不过这些一般后端来做,但是你需要为其提供正确的包名和签名。包名比较容易获取,如下图。

uni-app支付报错“errMsg“: “requestPayment:fail errors“;调不起微信;返回-1

在微信开放平台配置。

uni-app支付报错“errMsg“: “requestPayment:fail errors“;调不起微信;返回-1
接下来看怎么获取签名。

下载签名获取工具:点击下载

下载完成后是一个app,安装到手机上。另外再安装上咱们这个需要测试的包。

uni-app支付报错“errMsg“: “requestPayment:fail errors“;调不起微信;返回-1

输入包名,会自动获取到签名,复制下载配置到微信开放平台即可。

1.4:打包或使用自定义基座测试(很重要)。

既是上面配置正确,也没办法调起支付,你需要打一个包测试,或者使用自定义基座测试(有打印信息)。

自定义基座配置教程地址:https://ask.dcloud.net.cn/article/35115

1.5:权限和模块配置。

uni-app支付报错“errMsg“: “requestPayment:fail errors“;调不起微信;返回-1

一般选择后会自动添加相应支付权限,老版本可能需要自己选择。

uni-app支付报错“errMsg“: “requestPayment:fail errors“;调不起微信;返回-1

uni-app支付报错“errMsg“: “requestPayment:fail errors“;调不起微信;返回-1

登录鉴权功能按需添加。

这里的 appid 和 appsecret 在微信开放平台获取。

1.6:清除微信缓存。

个别时候,缓存也会造成支付失败,比如包名和签名之前测试过,后来又修改了等。

1.7:参数名全为小写。

appid,noncestr,package,partnerid,prepayid,timestamp,sign 这些参数都为小写,注意大小写。

						var orderInfo = {
							"appid":res.map.appid,
							"noncestr":res.map.nonceStr,
							"package":res.map.package,
							"partnerid":res.map.partnerid,
							"prepayid":res.map.prepayid,
							"timestamp":res.map.timestamp,
							"sign":res.map.sign
						}

2:其他

像 签名失败 这类,还有商户号绑定,app支付开通等问题就需要配合后端人员一起解决了。

相关标签: uni-app