Added ToS button, updated Yookassa VAT Code (but please check yookassa docs first)

This commit is contained in:
machka
2025-05-18 08:06:36 +00:00
parent f30ec43ca1
commit 2ef5bbdff5
6 changed files with 17 additions and 11 deletions
+1
View File
@@ -12,6 +12,7 @@ DEFAULT_CURRENCY_SYMBOL="RUB" # e.g., RUB, USD, EUR
# External Links # External Links
SUPPORT_LINK=https://t.me/your_support_link SUPPORT_LINK=https://t.me/your_support_link
SERVER_STATUS_URL=https://status.yourdomain.tld/status/your_service SERVER_STATUS_URL=https://status.yourdomain.tld/status/your_service
TERMS_OF_SERVICE_URL=https://example.com/tos
# YooKassa Payment Gateway Configuration # YooKassa Payment Gateway Configuration
YOOKASSA_SHOP_ID=your_shop_id YOOKASSA_SHOP_ID=your_shop_id
+5 -1
View File
@@ -21,7 +21,6 @@ def get_main_menu_inline_keyboard(
builder.row( builder.row(
InlineKeyboardButton(text=_(key="menu_subscribe_inline"), InlineKeyboardButton(text=_(key="menu_subscribe_inline"),
callback_data="main_action:subscribe")) callback_data="main_action:subscribe"))
builder.row( builder.row(
InlineKeyboardButton(text=_(key="menu_my_subscription_inline"), InlineKeyboardButton(text=_(key="menu_my_subscription_inline"),
callback_data="main_action:my_subscription")) callback_data="main_action:my_subscription"))
@@ -53,6 +52,11 @@ def get_main_menu_inline_keyboard(
InlineKeyboardButton(text=_(key="menu_support_button"), InlineKeyboardButton(text=_(key="menu_support_button"),
url=settings.SUPPORT_LINK)) 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() return builder.as_markup()
+3 -4
View File
@@ -22,6 +22,8 @@ class Settings(BaseSettings):
SERVER_STATUS_URL: Optional[str] = Field( SERVER_STATUS_URL: Optional[str] = Field(
default=None, default=None,
description="Link to server status page (e.g., Uptime Kuma)") 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_SHOP_ID: Optional[str] = None
YOOKASSA_SECRET_KEY: Optional[str] = None YOOKASSA_SECRET_KEY: Optional[str] = None
@@ -32,10 +34,7 @@ class Settings(BaseSettings):
default=None, default=None,
description="Default email for YooKassa receipts (REQUIRED for 54-FZ)") description="Default email for YooKassa receipts (REQUIRED for 54-FZ)")
YOOKASSA_VAT_CODE: int = Field( YOOKASSA_VAT_CODE: int = Field(
default=6, default=1, description="YooKassa VAT code (check YooKassa docs!)")
description=
"YooKassa VAT code (e.g., 1=20%, 2=10%, 4=0%, 6=No VAT - check YooKassa docs!)"
)
YOOKASSA_PAYMENT_MODE: str = Field( YOOKASSA_PAYMENT_MODE: str = Field(
default="full_prepayment", default="full_prepayment",
description= description=
+2 -2
View File
@@ -1,8 +1,8 @@
services: services:
vpn-shop: vpn-shop:
build: . build: .
container_name: vpn-shop container_name: vpn-shop-stable
hostname: vpn-shop hostname: vpn-shop-stable
env_file: env_file:
- .env - .env
networks: networks:
+2 -1
View File
@@ -10,13 +10,14 @@
"error_try_again": "An error occurred. Please try again.", "error_try_again": "An error occurred. Please try again.",
"menu_subscribe_inline": "🚀 Buy", "menu_subscribe_inline": "🚀 Buy",
"menu_my_subscription_inline": "📄 My Sub/Config", "menu_my_subscription_inline": "📆 My Sub/Config",
"menu_referral_inline": "🎁 Referrals", "menu_referral_inline": "🎁 Referrals",
"menu_apply_promo_button": "🎁 Promo Code", "menu_apply_promo_button": "🎁 Promo Code",
"menu_activate_trial_button": "🆓 Activate Trial", "menu_activate_trial_button": "🆓 Activate Trial",
"menu_language_settings_inline": "🌐 Language", "menu_language_settings_inline": "🌐 Language",
"menu_server_status_button": "📊 Status", "menu_server_status_button": "📊 Status",
"menu_support_button": "💬 Support", "menu_support_button": "💬 Support",
"menu_terms_button": "📄 Terms Of Service",
"back_to_main_menu_button": "⬅️ Main Menu", "back_to_main_menu_button": "⬅️ Main Menu",
"no_subscription_options_available": "Subscription options are currently unavailable.", "no_subscription_options_available": "Subscription options are currently unavailable.",
+4 -3
View File
@@ -10,13 +10,14 @@
"error_try_again": "Произошла ошибка. Попробуйте снова.", "error_try_again": "Произошла ошибка. Попробуйте снова.",
"menu_subscribe_inline": "🚀 Купить", "menu_subscribe_inline": "🚀 Купить",
"menu_my_subscription_inline": "📄 Моя подписка", "menu_my_subscription_inline": "📆 Моя подписка",
"menu_referral_inline": "🎁 Рефералы", "menu_referral_inline": "🎁 Рефералы",
"menu_apply_promo_button": "🎁 Промокод", "menu_apply_promo_button": "🎁 Промокод",
"menu_activate_trial_button": "🆓 Пробный период", "menu_activate_trial_button": "🆓 Пробный период",
"menu_language_settings_inline": "🌐 Язык", "menu_language_settings_inline": "🌐 Язык",
"menu_server_status_button": "📊 Статус", "menu_server_status_button": "📊 Статус",
"menu_support_button": "💬 Поддержка", "menu_support_button": "💬 Поддержка",
"menu_terms_button": "📄 Условия сервиса",
"back_to_main_menu_button": "⬅️ Назад", "back_to_main_menu_button": "⬅️ Назад",
"no_subscription_options_available": "Варианты подписки сейчас недоступны.", "no_subscription_options_available": "Варианты подписки сейчас недоступны.",
@@ -33,7 +34,7 @@
"payment_successful": "✅ Оплата успешна! Ваша подписка на <b>{months} мес.</b> активна до <b>{end_date}</b>.", "payment_successful": "✅ Оплата успешна! Ваша подписка на <b>{months} мес.</b> активна до <b>{end_date}</b>.",
"payment_failed": "❌ Оплата не удалась/отменена. Если деньги списаны, напишите в поддержку.", "payment_failed": "❌ Оплата не удалась/отменена. Если деньги списаны, напишите в поддержку.",
"payment_description_subscription": "Подписка на {months} мес.", "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": "Активной подписки нет. Оформите сейчас!", "subscription_not_active": "Активной подписки нет. Оформите сейчас!",
"config_link_not_available": "Н/Д (Попробуйте /sync или поддержка)", "config_link_not_available": "Н/Д (Попробуйте /sync или поддержка)",
"traffic_unlimited": "Безлимит", "traffic_unlimited": "Безлимит",
@@ -43,7 +44,7 @@
"status_disabled": "Отключена", "status_disabled": "Отключена",
"status_limited": "Ограничена", "status_limited": "Ограничена",
"status_unknown": "Неизвестен", "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_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": "Оплата прошла успешно, но возникла ошибка отображения деталей подписки. Пожалуйста, проверьте раздел 'Моя подписка' или свяжитесь с поддержкой.", "payment_successful_error_details": "Оплата прошла успешно, но возникла ошибка отображения деталей подписки. Пожалуйста, проверьте раздел 'Моя подписка' или свяжитесь с поддержкой.",
"error_processing_your_payment": "Ошибка обработки платежа. Обратитесь в поддержку, если проблема не решится.", "error_processing_your_payment": "Ошибка обработки платежа. Обратитесь в поддержку, если проблема не решится.",