微信支付踩坑和解决记录

1.H5支付回跳redirect_url传多个参数只返回一个参

h5支付会通过redirect_url在url传参过去,支付成功或者取消支付的时候会根据这个参数值回跳到你想要的页面(注意:需要是已授权的域名), 但我们的参数往往不止一个,传过去多少个参数,回跳回来都只会带redirect_url一个参数回来

解决方法:

路由中的域名和query参数等,都转为JSON字符串,例如params参数,一起传送过去,示例:

// data.mwebUrl: 微信支付地址

let url = data.mwebUrl + '&redirect_url=' + window.location.origin + '/detailsPage?params=' + JSON.stringify(params)
window.location.href = url

2.回跳后携带参数格式处理(非JSON格式字符串改为JSON格式字符串或对象)

传过去的是JSON,但微信支付返回的确实非JSON字符串,如下

'{type:100,phone:,qrcode:465465465,limit:10,page:1,isH5:1}'

处理方法:

// 处理微信回跳参数格式问题
const handleParams = (str) => {
	let originalString = str
	// 使用正则表达式匹配属性名和它们的值,确保属性名被双引号包围且无值的属性被赋予空字符串
	let correctedJsonString = originalString.replace(/(\w+):([^,}]*)(?=,|})/g, '"$1":"$2"').replace(/:\s*,/g, ':"",').replace(/:\s*}/g, ':""}');
	console.log(correctedJsonString);

	// 将修正后的字符串转换为JavaScript对象
	let jsonObj = JSON.parse(correctedJsonString);

	// 遍历对象,尝试将字符串类型的数值转换为数字
	// for (let key in jsonObj) {
	// 	if (!isNaN(jsonObj[key]) && jsonObj[key] !== "") {
	// 		jsonObj[key] = Number(jsonObj[key]);
	// 	}
	// }
	return jsonObj
}

3.通过微信授权接口获取wxcode后,页面来回跳转问题处理

4.页面跳转支付跳转失败问题

待补充

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值