fix: Старт 99₽, исправлена реферальная ссылка (полный username вместо split)

This commit is contained in:
Umbrix Dev
2026-02-08 23:54:30 +03:00
parent 33b20b979f
commit cd6167b381
4 changed files with 26 additions and 15 deletions

View File

@@ -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() {
<ReferralModal
isOpen={isReferralOpen}
onClose={() => 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);

View File

@@ -45,10 +45,10 @@ const PLANS: Record<PlanType, PlanConfig> = {
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: {

View File

@@ -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

View File

@@ -27,7 +27,7 @@ const PLANS: Plan[] = [
{
id: 'basic',
name: 'Старт',
price: 149,
price: 99,
features: ['Безлимитный трафик', 'До 3 устройств', 'Стандартная скорость', 'Email поддержка'],
icon: Shield,
},