扫码支付成功后如何自动跳转页面?
我做了一个H5的扫码支付页面,用户用微信扫了二维码之后,在微信里完成支付,但支付完页面不会自动跳转,得手动刷新才行。这体验太差了,有没有办法在支付成功后自动跳到订单完成页?
我试过用轮询查订单状态,但有时候用户支付很快,轮询还没开始就完成了,还是会卡在原页面。而且微信里好像对setTimeout和setInterval有限制?
现在前端是这样轮询的:
function checkPayStatus(orderId) {
const timer = setInterval(async () => {
const res = await fetch(<code>/api/check-order?orderId=${orderId}</code>);
if (res.status === 'paid') {
clearInterval(timer);
window.location.href = '/success';
}
}, 2000);
}
但效果不稳定,求问有没有更靠谱的做法?
给你个简单实现:
后端收到微信支付回调后:
前端改成这样:
没条件搞WebSocket的话,用SSE也行,都比轮询强。微信里别用setInterval,容易被 throttle。