"use client"; import React from "react"; export default function PayRedirectPage() { const [status, setStatus] = React.useState("等待安全收银台跳转..."); const [error, setError] = React.useState(""); React.useEffect(() => { const handleMessage = (event: MessageEvent) => { try { if (event.origin !== window.location.origin) return; const data = event.data || {}; if (data?.type === "redirect-to-payment" && typeof data?.url === "string") { setStatus("即将跳转到 Stripe 收银台..."); window.location.href = data.url as string; } else if (data?.type === "redirect-error") { setError(typeof data?.message === "string" ? data.message : "创建支付失败,请关闭此页重试"); } } catch { setError("处理跳转信息时发生错误,请关闭此页重试"); } }; window.addEventListener("message", handleMessage); // 超时兜底:若 15 秒内未收到跳转指令,提示用户 const timeoutId = window.setTimeout(() => { setStatus(""); setError("未收到跳转指令,可能网络异常或页面被拦截。请返回重试。"); }, 15000); return () => { window.removeEventListener("message", handleMessage); window.clearTimeout(timeoutId); }; }, []); return (

正在准备跳转

{status &&

{status}

} {error &&

{error}

} {!error && (

如长时间未跳转,请返回原页重试或检查网络。

)}
); }