From cd6167b3811c0988a81011af313e25a757c75694 Mon Sep 17 00:00:00 2001 From: Umbrix Dev Date: Sun, 8 Feb 2026 23:54:30 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=A1=D1=82=D0=B0=D1=80=D1=82=2099?= =?UTF-8?q?=E2=82=BD,=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=80=D0=B5=D1=84=D0=B5=D1=80=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B0=20(?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=BD=D1=8B=D0=B9=20username=20=D0=B2=D0=BC?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=BE=20split)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/page.tsx | 28 +++++++++++++++++++--------- app/plans/page.tsx | 8 ++++---- app/referral/page.tsx | 3 ++- components/OnboardingFlow.tsx | 2 +- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index 226b778..cb38194 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -144,8 +144,8 @@ export default function Home() { } }; const shareReferralLink = async () => { - // Генерируем реферальную ссылку (TODO: заменить на реальный user ID после авторизации) - const userId = subscriptionToken?.split('_')[0] || 'DEMO'; + // Генерируем реферальную ссылку — используем полный subscriptionToken (= Marzban username) + const userId = subscriptionToken || 'DEMO'; const botUsername = process.env.NEXT_PUBLIC_TELEGRAM_BOT_USERNAME || 'Dorod_vps_bot'; const referralUrl = `https://t.me/${botUsername}?start=ref_${userId}`; const shareText = `🚀 Попробуй Umbrix VPN - быстрый и безопасный VPN!\n\n✨ Получи 7 дней бесплатно по моей ссылке:\n${referralUrl}`; @@ -175,9 +175,19 @@ export default function Home() { const handleActivateTrial = async () => { setIsLoading(true); try { - // Получаем referrerId из URL (если есть) + // Получаем referrerId из URL query ИЛИ из Telegram start_param const urlParams = new URLSearchParams(window.location.search); - const referrerId = urlParams.get('ref'); + let referrerId = urlParams.get('ref'); + + // Также проверяем Telegram start_param (приоритетнее) + const telegramWebApp = (window as any).Telegram?.WebApp; + const startParam = telegramWebApp?.initDataUnsafe?.start_param; + if (startParam && startParam.startsWith('ref_')) { + referrerId = startParam.replace('ref_', ''); + } + + // Получаем реальные данные Telegram + const tgUser = telegramWebApp?.initDataUnsafe?.user; // Создаем trial подписку через API const response = await fetch('/api/create-user', { @@ -185,9 +195,9 @@ export default function Home() { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ planType: 'trial', - telegramId: Date.now(), // Временно, пока нет настоящего Telegram ID - telegramUsername: 'demo_user', - firstName: 'Demo', + telegramId: tgUser?.id || Date.now(), + telegramUsername: tgUser?.username || undefined, + firstName: tgUser?.first_name || undefined, referrerId: referrerId || undefined, }), }); @@ -520,13 +530,13 @@ export default function Home() { setIsReferralOpen(false)} - referralUrl={`https://t.me/${process.env.NEXT_PUBLIC_TELEGRAM_BOT_USERNAME || 'Dorod_vps_bot'}?start=ref_${subscriptionToken?.split('_')[0] || 'DEMO'}`} + referralUrl={`https://t.me/${process.env.NEXT_PUBLIC_TELEGRAM_BOT_USERNAME || 'Dorod_vps_bot'}?start=ref_${subscriptionToken || 'DEMO'}`} onShare={() => { shareReferralLink(); setIsReferralOpen(false); }} onCopy={() => { - const userId = subscriptionToken?.split('_')[0] || 'DEMO'; + const userId = subscriptionToken || 'DEMO'; const botUsername = process.env.NEXT_PUBLIC_TELEGRAM_BOT_USERNAME || 'Dorod_vps_bot'; const referralUrl = `https://t.me/${botUsername}?start=ref_${userId}`; copyToClipboard(referralUrl); diff --git a/app/plans/page.tsx b/app/plans/page.tsx index e4d395d..f5c3aa1 100644 --- a/app/plans/page.tsx +++ b/app/plans/page.tsx @@ -45,10 +45,10 @@ const PLANS: Record = { maxLocations: 1, dataLimit: '50 ГБ', prices: { - '1month': 149, - '3months': 399, // -11% (133₽/мес) - '6months': 719, // -20% (119₽/мес) - '1year': 1349, // -25% (112₽/мес) + '1month': 99, + '3months': 269, // -9% (89₽/мес) + '6months': 499, // -16% (83₽/мес) + '1year': 949, // -20% (79₽/мес) }, }, plus: { diff --git a/app/referral/page.tsx b/app/referral/page.tsx index 4936cbf..f10b243 100644 --- a/app/referral/page.tsx +++ b/app/referral/page.tsx @@ -50,7 +50,8 @@ export default function ReferralPage() { return; } - const userId = token.split('_')[0]; + // subscriptionToken = Marzban username (полное имя, НЕ split по _) + const userId = token; setUsername(userId); // Generate referral URL diff --git a/components/OnboardingFlow.tsx b/components/OnboardingFlow.tsx index 07b4b34..48a481c 100644 --- a/components/OnboardingFlow.tsx +++ b/components/OnboardingFlow.tsx @@ -27,7 +27,7 @@ const PLANS: Plan[] = [ { id: 'basic', name: 'Старт', - price: 149, + price: 99, features: ['Безлимитный трафик', 'До 3 устройств', 'Стандартная скорость', 'Email поддержка'], icon: Shield, },