调用支付宝时一直不成功,总是返回62001 提示用户中途取消 实际上我根本就没有取消,最好经过2个小时的排查,发现是以为调用支付宝时传递的参数有问题,或者说是后端返回的数据格式不是支付宝的格式
调用后台接口返回的数据如图:
返回的数据中 有html的转义字符 & 正是因为这个字符造成的支付失败
所以调用方法把 & 替换成正常的&字符,就能正常调用支付了
//转意符换成普通字符
function escape2Html(str) {
var arrEntities = {
'lt': '<',
'gt': '>',
'nbsp': ' ',
'amp': '&',
'quot': '"'
};
return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {
return arrEntities[t];
});
}
转义后的结果如图:
替换后,可以正常调用支付宝支付了
调用支付宝付款方法
//app支付宝支付调用支付宝
appAliPay(orderInfo){
uni.requestPayment({
provider:'alipay',
orderInfo: orderInfo, //微信、支付宝订单数据 【注意微信的订单信息,键值应该全部是小写,不能采用驼峰命名】
success:(res)=> {
console.log('success:' + JSON.stringify(res));
this.paySuccess(res);
},
fail: (err)=> {
console.log('fail:' + JSON.stringify(err));
this.appPayFail(err);
}
});
},
注意:之前使用的是H5+的支付方式,应该是官方有处理过,所以不存在这个问题,现在改用uniapp后发现有问题的
这个是在支付宝官方说明中找到的答案
网址: https://opendocs.alipay.com/open/204/105296