uniapp微信支付 报错

errMsg: "requestPayment:fail parameter error: parameter.non…r.signType should be String instead of Undefined;"

requestPayment:失败参数错误:参数。非…r.signType应为字符串,而不是未定义

解决方案:

1.看后端返回的值

在控制台打印出来:后端给的是字符串   这个不是我们想要的

2.将字符串转成对象 

JSON.parse(val)

 let data = JSON.parse(res.msg.pary_result.data)
                             console.log(data, "data")
                            

3.将对象取出来

微信支付代码段

//获取微信支付参数信息
			wxPayParamInfo(payParam) {
				wxPayParamInfoApi({
					ordersid: payParam.id, //订单id
					shopid: payParam.shop_id, //门店id
				}).then(res => {
					if (res.msg.success) {
						if (res.msg.pary_result.status === "y") {
							// {"appId":"wx69d163dabf9b4cf6",
							// "timeStamp":"1653027116",
							// "nonceStr":"uAz6AJcHLjQlfIE5Cibl0SX9sRpWn9NZ",
							// "package":"prepay_id=wx20141156328918980fc211bfcffc450000",
							// "signType":"MD5",
							// "paySign":"F0B4CF170D213278FECFD896A6E8E4F3"} 
							let data = JSON.parse(res.msg.pary_result.data)
							let appId = data.appId;
							let timeStamp = data.timeStamp;
							let nonceStr = data.nonceStr;
							let packageX = data.package;
							let signType = data.signType;
							let paySign = data.paySign;
							
							console.log(appId, "appId")
							console.log(timeStamp, "timeStamp")
							console.log(nonceStr, "nonceStr")
							console.log(packageX, "package")
							console.log(signType, "signType")
							console.log(paySign, "paySign")

							uni.requestPayment({ //下面参数为必传
								provider: 'wxpay', //支付类型
								appId: appId, //小程序Appid
								timeStamp:timeStamp , //创建订单时间戳
								nonceStr: nonceStr,
								package: packageX, // 订单包
								signType: signType, // 加密方式统一'MD5'
								paySign: paySign, // 后台支付签名返回
								success(res) {
									console.log("支付成功", res)
									console.log("完成")
									if (res.errMsg === 'requestPayment:ok') {
										uni.showToast({
											title: "支付成功",
											icon: 'success',
											duration: 2000
										})
										setTimeout(() => {
											uni.reLaunch({ //关闭所有页面,打开到应用内的某个页面。--直接返回首页
												url: '/pagesCatering/views/order/order?id=' +
													payParam.id
											})
										}, 2000);
									}
								},
								fail(err) {
									console.log("支付失败", err)
								}
							})
						}
					}
				})
			},

唤起微信支付 

3.将字符串转成字符串

JSON.stringify(val)


                            let dataStringify = JSON.stringify(res.msg.pary_result.data)
                             console.log(dataStringify, " 本来后端返回的是字符串又被JSON.stringify(val)转了一次,变成\\转义字符 ") 

JSON.stringify(val)转成字符串

JSON.parse(val)转成对象

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,你的鼓励将是我创作的最大动力!

 qq群933053581

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐