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.页面跳转支付跳转失败问题
待补充