如题,在用 uniapp做APP的时候,需要用到支付,在用uni.requestPayment的时候,一切都很顺利,成功后,后端说要给他支付宝返回的订单号(trade_no),本以为正常可以拿到,结果,JSON.stringify把结果打印出来之后,放进json.cn里面根本没法正常转义,一层一层刨开发现对象里面多了一句话,如图。红框框起来的都是多余的,包括花括号,去掉就可以正常字符串转对象。真的拉胯,字符串太长了,不想看,一直以为返回结果没问题,弄了半天~~
希望官方看到后能处理一下!!!
附解决方案代码:
pullUpPay(provider, orderInfo) {
let that = this
uni.requestPayment({
provider: provider,
orderInfo: orderInfo, // 微信、支付宝订单数据
success: function (res) {
console.log('success:' + JSON.stringify(res))
console.log('缴费成功')
if(provider === 'alipay') {
console.log('rawdata:' + res.rawdata)
let rawData = JSON.parse(res.rawdata) // 取对象中的rawdata
let resultStr = rawData.result // 取出result字符串
let resultList = resultStr.split(';') // 分号分割,取第0个
let finalRes = resultList[0].substring(0, resultList[0].length - 1) // 将取出来的第0个字符串的最后一位花括号去掉
let finalObject = JSON.parse(finalRes) // 正常转义
let trade_no = finalObject.alipay_trade_app_pay_response.trade_no // 取出订单号
console.log(trade_no)
} else if(provider === 'wxpay') {
// 微信支付申请还没通过,出了问题,估计也和支付宝一样
}
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err))
console.log('缴费失败')
}
})
}