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

文章目录

    • 1:"errMsg": "requestPayment:fail errors"
          • 1.1:为空判断
          • 1.2:参数类型(orderInfo)
          • 1.3:包名和签名
          • 1.4:打包或使用自定义基座测试(很重要)。
          • 1.5:权限和模块配置。
          • 1.6:清除微信缓存。
          • 1.7:参数名全为小写。
    • 2:其他

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_第1张图片

在微信开放平台配置。

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

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

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

uni-app支付报错“errMsg“: “requestPayment:fail errors“;调不起微信;返回-1_第3张图片

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

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

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

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

1.5:权限和模块配置。

uni-app支付报错“errMsg“: “requestPayment:fail errors“;调不起微信;返回-1_第4张图片

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

在这里插入图片描述

uni-app支付报错“errMsg“: “requestPayment:fail errors“;调不起微信;返回-1_第5张图片

登录鉴权功能按需添加。

这里的 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)