// GuestOrderSuccess — polls payment status, shows order number + TP instructions const { useState: useGOSState, useEffect: useGOSEffect, useRef: useGOSRef } = React; const SUPPORT_LINK = 'https://t.me/avito_pf_otzizi'; const MAX_POLLS = 30; const POLL_INTERVAL_MS = 2000; function GuestOrderSuccess({ guestOrderId, onNavigate }) { const [state, setState] = useGOSState('polling'); // polling | paid | failed | timeout const [orderId, setOrderId] = useGOSState(null); const polls = useGOSRef(0); useGOSEffect(() => { if (!guestOrderId) { setState('failed'); return; } const timer = setInterval(async () => { polls.current += 1; if (polls.current > MAX_POLLS) { clearInterval(timer); setState('timeout'); return; } try { const data = await api.get(`/api/guest-orders/${guestOrderId}/status`); if (data.status === 'paid') { clearInterval(timer); setOrderId(data.order_id || guestOrderId); setState('paid'); } else if (data.status === 'failed') { clearInterval(timer); setState('failed'); } } catch (_) {} }, POLL_INTERVAL_MS); return () => clearInterval(timer); }, [guestOrderId]); if (state === 'polling') return (
Это займёт несколько секунд
Спасибо, заказ передан в работу.
Платёж был отменён или время ожидания истекло. Попробуйте ещё раз или напишите в поддержку.