Added ToS button, updated Yookassa VAT Code (but please check yookassa docs first)
This commit is contained in:
@@ -12,6 +12,7 @@ DEFAULT_CURRENCY_SYMBOL="RUB" # e.g., RUB, USD, EUR
|
||||
# External Links
|
||||
SUPPORT_LINK=https://t.me/your_support_link
|
||||
SERVER_STATUS_URL=https://status.yourdomain.tld/status/your_service
|
||||
TERMS_OF_SERVICE_URL=https://example.com/tos
|
||||
|
||||
# YooKassa Payment Gateway Configuration
|
||||
YOOKASSA_SHOP_ID=your_shop_id
|
||||
|
||||
@@ -21,7 +21,6 @@ def get_main_menu_inline_keyboard(
|
||||
builder.row(
|
||||
InlineKeyboardButton(text=_(key="menu_subscribe_inline"),
|
||||
callback_data="main_action:subscribe"))
|
||||
|
||||
builder.row(
|
||||
InlineKeyboardButton(text=_(key="menu_my_subscription_inline"),
|
||||
callback_data="main_action:my_subscription"))
|
||||
@@ -53,6 +52,11 @@ def get_main_menu_inline_keyboard(
|
||||
InlineKeyboardButton(text=_(key="menu_support_button"),
|
||||
url=settings.SUPPORT_LINK))
|
||||
|
||||
if settings.TERMS_OF_SERVICE_URL:
|
||||
builder.row(
|
||||
InlineKeyboardButton(text=_(key="menu_terms_button"),
|
||||
url=settings.TERMS_OF_SERVICE_URL))
|
||||
|
||||
return builder.as_markup()
|
||||
|
||||
|
||||
|
||||
+3
-4
@@ -22,6 +22,8 @@ class Settings(BaseSettings):
|
||||
SERVER_STATUS_URL: Optional[str] = Field(
|
||||
default=None,
|
||||
description="Link to server status page (e.g., Uptime Kuma)")
|
||||
TERMS_OF_SERVICE_URL: Optional[str] = Field(
|
||||
default=None, description="Link to Terms of Use page")
|
||||
|
||||
YOOKASSA_SHOP_ID: Optional[str] = None
|
||||
YOOKASSA_SECRET_KEY: Optional[str] = None
|
||||
@@ -32,10 +34,7 @@ class Settings(BaseSettings):
|
||||
default=None,
|
||||
description="Default email for YooKassa receipts (REQUIRED for 54-FZ)")
|
||||
YOOKASSA_VAT_CODE: int = Field(
|
||||
default=6,
|
||||
description=
|
||||
"YooKassa VAT code (e.g., 1=20%, 2=10%, 4=0%, 6=No VAT - check YooKassa docs!)"
|
||||
)
|
||||
default=1, description="YooKassa VAT code (check YooKassa docs!)")
|
||||
YOOKASSA_PAYMENT_MODE: str = Field(
|
||||
default="full_prepayment",
|
||||
description=
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
services:
|
||||
vpn-shop:
|
||||
build: .
|
||||
container_name: vpn-shop
|
||||
hostname: vpn-shop
|
||||
container_name: vpn-shop-stable
|
||||
hostname: vpn-shop-stable
|
||||
env_file:
|
||||
- .env
|
||||
networks:
|
||||
|
||||
+2
-1
@@ -10,13 +10,14 @@
|
||||
"error_try_again": "An error occurred. Please try again.",
|
||||
|
||||
"menu_subscribe_inline": "🚀 Buy",
|
||||
"menu_my_subscription_inline": "📄 My Sub/Config",
|
||||
"menu_my_subscription_inline": "📆 My Sub/Config",
|
||||
"menu_referral_inline": "🎁 Referrals",
|
||||
"menu_apply_promo_button": "🎁 Promo Code",
|
||||
"menu_activate_trial_button": "🆓 Activate Trial",
|
||||
"menu_language_settings_inline": "🌐 Language",
|
||||
"menu_server_status_button": "📊 Status",
|
||||
"menu_support_button": "💬 Support",
|
||||
"menu_terms_button": "📄 Terms Of Service",
|
||||
"back_to_main_menu_button": "⬅️ Main Menu",
|
||||
|
||||
"no_subscription_options_available": "Subscription options are currently unavailable.",
|
||||
|
||||
+4
-3
@@ -10,13 +10,14 @@
|
||||
"error_try_again": "Произошла ошибка. Попробуйте снова.",
|
||||
|
||||
"menu_subscribe_inline": "🚀 Купить",
|
||||
"menu_my_subscription_inline": "📄 Моя подписка",
|
||||
"menu_my_subscription_inline": "📆 Моя подписка",
|
||||
"menu_referral_inline": "🎁 Рефералы",
|
||||
"menu_apply_promo_button": "🎁 Промокод",
|
||||
"menu_activate_trial_button": "🆓 Пробный период",
|
||||
"menu_language_settings_inline": "🌐 Язык",
|
||||
"menu_server_status_button": "📊 Статус",
|
||||
"menu_support_button": "💬 Поддержка",
|
||||
"menu_terms_button": "📄 Условия сервиса",
|
||||
"back_to_main_menu_button": "⬅️ Назад",
|
||||
|
||||
"no_subscription_options_available": "Варианты подписки сейчас недоступны.",
|
||||
@@ -33,7 +34,7 @@
|
||||
"payment_successful": "✅ Оплата успешна! Ваша подписка на <b>{months} мес.</b> активна до <b>{end_date}</b>.",
|
||||
"payment_failed": "❌ Оплата не удалась/отменена. Если деньги списаны, напишите в поддержку.",
|
||||
"payment_description_subscription": "Подписка на {months} мес.",
|
||||
"my_subscription_details": "ℹ️ <b>Ваша подписка</b>\n\n🗓️ До: <b>{end_date}</b> (Осталось: {days_left} дн.)\n\n🔗 Ссылка: <code>{config_link}</code>\n\n📊 Трафик: {traffic_used} / {traffic_limit}\n💡 Статус: {status}",
|
||||
"my_subscription_details": "ℹ️ <b>Ваша подписка</b>\n\n🗓️ До: <b>{end_date}</b> (Дней осталось: {days_left})\n\n🔗 Ссылка: <code>{config_link}</code>\n\n📊 Трафик: {traffic_used} / {traffic_limit}\n💡 Статус: {status}",
|
||||
"subscription_not_active": "Активной подписки нет. Оформите сейчас!",
|
||||
"config_link_not_available": "Н/Д (Попробуйте /sync или поддержка)",
|
||||
"traffic_unlimited": "Безлимит",
|
||||
@@ -43,7 +44,7 @@
|
||||
"status_disabled": "Отключена",
|
||||
"status_limited": "Ограничена",
|
||||
"status_unknown": "Неизвестен",
|
||||
"subscription_ending_soon_notification": "{user_name},\nВаша подписка истекает <b>{end_date}</b> (через {days_left} дней).\nНе забудьте продлить!",
|
||||
"subscription_ending_soon_notification": "{user_name},\nВаша подписка истекает <b>{end_date}</b> (дней осталось: {days_left}).\nНе забудьте продлить!",
|
||||
"payment_successful_with_referral_bonus": "✅ Оплата на <b>{months} мес.</b> успешна! Базовая дата: {base_end_date}.\n\n🎉 Вас пригласил(а) {inviter_name}, вы получили дополнительно <b>{bonus_days} бонусных дней</b>!\nИтоговая дата окончания: <b>{final_end_date}</b>.",
|
||||
"payment_successful_error_details": "Оплата прошла успешно, но возникла ошибка отображения деталей подписки. Пожалуйста, проверьте раздел 'Моя подписка' или свяжитесь с поддержкой.",
|
||||
"error_processing_your_payment": "Ошибка обработки платежа. Обратитесь в поддержку, если проблема не решится.",
|
||||
|
||||
Reference in New Issue
Block a user