支付核心代码
1.判断是微信支付还是支付宝支付
2.微信支付需要进行轮询;支付宝配置支付成功后的重定向地址【注意地址是否跨域,token 是否失效】
if (flags === 'wechatPay') {
// 微信支付
await getWxCode()
// 轮询查询订单状态
timers.value = setInterval(async () => {
// 查询订单是否支付成功
await queryOrderStatus();
}, 3000)
} else {
// 支付宝支付
const res = await aliPayTransactions({orderId: targetOrderId.value})
if (res.code !== 200) {
ElMessage.error(res.message)
return
}
dialogVisibleInner.value = true;
let newTab = window.open();
newTab.document.write(res.result);
}
获取微信二维码
const getWxCode = async () => {
await wxPayTransactions({type: "native", orderCode: targetOrderId.value}).then(res => {
code_url_wx.value = res.code_url
dialogVisible.value = true
}).catch(err => {
ElMessage.error(err)
})
}
微信轮询订单
// 查询订单号 wx
const queryOrderStatus = async () => {
const res = await wxPayQuery({orderNo: targetOrderId.value})
if (res.trade_state === 'SUCCESS') {
clearInterval(timers.value);
// 三秒后跳转到支付成功的页面
setTimeout(() => {
router.push({path: '/personal/paySuccess', query: {orderNo: targetOrderId.value}})
}, 3000)
} else {
console.log('等待支付中...')
}
}