// 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 (

Проверяем оплату...

Это займёт несколько секунд

); if (state === 'paid') return (

Оплата прошла! Заказ принят

Спасибо, заказ передан в работу.

Ваш заказ
#{orderId}
📞 Как узнать статус заказа
{[ Напишите в @avito_pf_otzizi, Назовите ваш номер телефона (и номер заказа #{orderId} — по желанию), Мы найдём заказ и ответим в течение рабочего дня, ].map((text, i) => (
{i + 1}
{text}
))}
Написать в поддержку
onNavigate('landing')}>← На главную
); // failed or timeout return (

Оплата не прошла

Платёж был отменён или время ожидания истекло. Попробуйте ещё раз или напишите в поддержку.

Написать в поддержку onNavigate('landing')}>← На главную
); } Object.assign(window, { GuestOrderSuccess });