feat: show optional serivce description before payment

This commit is contained in:
3252a8
2026-05-20 21:55:22 +03:00
parent d8a1da1f13
commit 7521f89ffd
51 changed files with 1199 additions and 499 deletions
+23 -6
View File
@@ -133,6 +133,27 @@ SETTINGS_MANIFEST: List[SettingField] = [
"Порядок методов оплаты",
"Через запятую, например: severpay,freekassa,yookassa",
),
SettingField(
"SUBSCRIPTION_PURCHASE_DESCRIPTION_ENABLED",
"bool",
"pricing",
"Показывать описание подписки",
"Текст появится перед выбором срока покупки или продления.",
),
SettingField(
"SUBSCRIPTION_PURCHASE_DESCRIPTION_RU",
"text",
"pricing",
"Описание подписки (RU)",
"Русская версия текста на этапе оплаты.",
),
SettingField(
"SUBSCRIPTION_PURCHASE_DESCRIPTION_EN",
"text",
"pricing",
"Описание подписки (EN)",
"Английская версия текста на этапе оплаты.",
),
# ─── Payment providers (toggles) ───────────────────────────────
# Common
SettingField("STARS_ENABLED", "bool", "payments", "Telegram Stars", subsection="Общие"),
@@ -338,9 +359,7 @@ SETTINGS_MANIFEST: List[SettingField] = [
]
def _provider_field_to_setting_field(
spec: Any, manifest_field: Any
) -> SettingField:
def _provider_field_to_setting_field(spec: Any, manifest_field: Any) -> SettingField:
return SettingField(
key=manifest_field.key,
type=manifest_field.type,
@@ -445,9 +464,7 @@ def manifest_payload() -> List[dict]:
items: List[dict] = []
for field in aggregated_manifest():
auto_label_i18n_key = f"admin_settings_field_{field.key.lower()}_label"
auto_description_i18n_key = (
f"admin_settings_field_{field.key.lower()}_description"
)
auto_description_i18n_key = f"admin_settings_field_{field.key.lower()}_description"
default_value: Optional[str] = None
owner = find_manifest_owner(field.key)
-2
View File
@@ -679,5 +679,3 @@ async def _create_subscription_payment(
)
return _json_error(400, "payment_unavailable", "Payment method unavailable")
@@ -131,6 +131,7 @@ async def _build_user_payload(request: web.Request, user_id: int) -> Dict[str, A
"trial_duration_days": int(settings.TRIAL_DURATION_DAYS or 0),
"trial_traffic_limit_gb": float(settings.TRIAL_TRAFFIC_LIMIT_GB or 0),
"trial_traffic_strategy": getattr(settings, "TRIAL_TRAFFIC_STRATEGY", "NO_RESET"),
"subscription_purchase_description": settings.subscription_purchase_description(lang),
"email_auth_enabled": settings.email_auth_configured,
},
}