feat(webapp): expose LAVA settings in admin UI and demo

Add RU/EN admin locale strings for the LAVA settings subsection and
field labels, regenerate the demo settings manifest snapshot, and list
LAVA among the demo dataset payment methods.
This commit is contained in:
3252a8
2026-06-10 23:32:20 +03:00
parent bb844869ee
commit bd1cfd1d63
4 changed files with 419 additions and 1 deletions
+5
View File
@@ -484,6 +484,11 @@ export const DEMO_DATASET = {
name: "PayKilla",
icon: "Bitcoin",
},
{
id: "lava",
name: "LAVA",
icon: "CreditCard",
},
],
referral: {
code: "DEMO0001",
@@ -670,7 +670,7 @@
"section_order": 4,
"subsection": "common",
"label": "Порядок методов оплаты",
"description": "Через запятую: severpay,freekassa,yookassa,platega,stars,cryptopay,heleket,paykilla",
"description": "Через запятую: severpay,freekassa,yookassa,platega,stars,cryptopay,heleket,paykilla,lava",
"i18n_label_key": "admin_settings_field_payment_methods_order_label",
"i18n_description_key": "admin_settings_field_payment_methods_order_description",
"i18n_subsection_key": "admin_settings_subsection_common",
@@ -4598,6 +4598,393 @@
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "LAVA_ENABLED",
"type": "bool",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Включена",
"description": "",
"i18n_label_key": "admin_settings_field_lava_enabled_label",
"i18n_description_key": null,
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": null,
"placeholder": "",
"optional": true,
"secret": false,
"mutually_exclusive_key": "LAVA_ADMIN_ONLY_ENABLED",
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "LAVA_SHOP_ID",
"type": "string",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Shop ID",
"description": "",
"i18n_label_key": "admin_settings_field_lava_shop_id_label",
"i18n_description_key": null,
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": null,
"placeholder": "",
"optional": true,
"secret": false,
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "LAVA_SECRET_KEY",
"type": "string",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Secret key",
"description": "Signs outgoing API requests (HMAC-SHA256 in the Signature header).",
"i18n_label_key": "admin_settings_field_lava_secret_key_label",
"i18n_description_key": "admin_settings_field_lava_secret_key_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": null,
"placeholder": "",
"optional": true,
"secret": true,
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"has_value": false,
"webhook_base_url_configured": false
},
{
"key": "LAVA_WEBHOOK_SECRET",
"type": "string",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Webhook secret",
"description": "The shop's additional key used to verify webhook signatures. Leave empty to reuse the secret key.",
"i18n_label_key": "admin_settings_field_lava_webhook_secret_label",
"i18n_description_key": "admin_settings_field_lava_webhook_secret_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": null,
"placeholder": "",
"optional": true,
"secret": true,
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"has_value": false,
"webhook_base_url_configured": false
},
{
"key": "LAVA_BASE_URL",
"type": "url",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Base URL",
"description": "",
"i18n_label_key": "admin_settings_field_lava_base_url_label",
"i18n_description_key": null,
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": "admin_settings_field_lava_base_url_placeholder",
"placeholder": "https://api.lava.ru",
"optional": true,
"secret": false,
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "LAVA_RETURN_URL",
"type": "url",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Return URL",
"description": "",
"i18n_label_key": "admin_settings_field_lava_return_url_label",
"i18n_description_key": null,
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": null,
"placeholder": "",
"optional": true,
"secret": false,
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "LAVA_LIFETIME_MINUTES",
"type": "int",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Payment link lifetime (minutes)",
"description": "1..7200; leave empty for the LAVA default.",
"i18n_label_key": "admin_settings_field_lava_lifetime_minutes_label",
"i18n_description_key": "admin_settings_field_lava_lifetime_minutes_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": null,
"placeholder": "",
"optional": true,
"secret": false,
"min": 1,
"max": 7200,
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "LAVA_INCLUDE_SERVICES",
"type": "string",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Payment services filter",
"description": "Comma-separated LAVA pay services to show on the payment page (e.g. card,sbp). Empty shows everything enabled for the shop.",
"i18n_label_key": "admin_settings_field_lava_include_services_label",
"i18n_description_key": "admin_settings_field_lava_include_services_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": "admin_settings_field_lava_include_services_placeholder",
"placeholder": "card,sbp",
"optional": true,
"secret": false,
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "PAYMENT_LAVA_WEBAPP_LABEL_RU",
"type": "string",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "WebApp button text (RU)",
"description": "Custom Russian text shown in the Web App payment method button.",
"i18n_label_key": "admin_settings_field_payment_lava_webapp_label_ru_label",
"i18n_description_key": "admin_settings_field_payment_lava_webapp_label_ru_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": "admin_settings_field_payment_lava_webapp_label_ru_placeholder",
"placeholder": "LAVA",
"optional": true,
"secret": false,
"default": "LAVA",
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "PAYMENT_LAVA_WEBAPP_LABEL_EN",
"type": "string",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "WebApp button text (EN)",
"description": "Custom English text shown in the Web App payment method button.",
"i18n_label_key": "admin_settings_field_payment_lava_webapp_label_en_label",
"i18n_description_key": "admin_settings_field_payment_lava_webapp_label_en_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": "admin_settings_field_payment_lava_webapp_label_en_placeholder",
"placeholder": "LAVA",
"optional": true,
"secret": false,
"default": "LAVA",
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "PAYMENT_LAVA_WEBAPP_ICON",
"type": "icon",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "WebApp button icon",
"description": "Lucide icon name rendered inside the Web App payment method button.",
"i18n_label_key": "admin_settings_field_payment_lava_webapp_icon_label",
"i18n_description_key": "admin_settings_field_payment_lava_webapp_icon_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": "admin_settings_field_payment_lava_webapp_icon_placeholder",
"placeholder": "CreditCard",
"optional": true,
"secret": false,
"default": "CreditCard",
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "PAYMENT_LAVA_TELEGRAM_LABEL_RU",
"type": "string",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Telegram button text (RU)",
"description": "Custom Russian text shown in Telegram bot payment buttons.",
"i18n_label_key": "admin_settings_field_payment_lava_telegram_label_ru_label",
"i18n_description_key": "admin_settings_field_payment_lava_telegram_label_ru_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": "admin_settings_field_payment_lava_telegram_label_ru_placeholder",
"placeholder": "LAVA",
"optional": true,
"secret": false,
"default": "LAVA",
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "PAYMENT_LAVA_TELEGRAM_LABEL_EN",
"type": "string",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Telegram button text (EN)",
"description": "Custom English text shown in Telegram bot payment buttons.",
"i18n_label_key": "admin_settings_field_payment_lava_telegram_label_en_label",
"i18n_description_key": "admin_settings_field_payment_lava_telegram_label_en_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": "admin_settings_field_payment_lava_telegram_label_en_placeholder",
"placeholder": "LAVA",
"optional": true,
"secret": false,
"default": "LAVA",
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "PAYMENT_LAVA_TELEGRAM_EMOJI",
"type": "string",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Telegram button emoji",
"description": "Emoji prepended to the Telegram bot payment button when customized.",
"i18n_label_key": "admin_settings_field_payment_lava_telegram_emoji_label",
"i18n_description_key": "admin_settings_field_payment_lava_telegram_emoji_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": "admin_settings_field_payment_lava_telegram_emoji_placeholder",
"placeholder": "💳",
"optional": true,
"secret": false,
"default": "💳",
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
},
{
"key": "LAVA_ADMIN_ONLY_ENABLED",
"type": "bool",
"section": "payments",
"section_order": 4,
"subsection": "LAVA",
"label": "Only for admins",
"description": "Shows this payment method only to users from ADMIN_IDS. Webhooks and provider services remain active for admin test payments.",
"i18n_label_key": "admin_settings_provider_admin_only_label",
"i18n_description_key": "admin_settings_provider_admin_only_description",
"i18n_subsection_key": "admin_settings_subsection_lava",
"i18n_placeholder_key": null,
"placeholder": "",
"optional": true,
"secret": false,
"mutually_exclusive_key": "LAVA_ENABLED",
"provider_id": "lava",
"provider_label": "LAVA",
"webhook_provider_id": "lava",
"webhook_path": "/webhook/lava",
"webhook_requires_base_url": false,
"value": "",
"overridden": false,
"updated_at": null,
"webhook_base_url_configured": false
}
]
},
+13
View File
@@ -1220,6 +1220,7 @@
"admin_settings_subsection_wata": "Wata",
"admin_settings_subsection_heleket": "Heleket",
"admin_settings_subsection_paykilla": "PayKilla",
"admin_settings_subsection_lava": "LAVA",
"admin_settings_provider_webhook_url": "Webhook URL",
"admin_settings_provider_webhook_url_hint": "Use this URL in the provider webhook settings.",
"admin_settings_panel_webhook_url_hint": "Use this URL as WEBHOOK_URL in Remnawave Panel.",
@@ -1772,6 +1773,18 @@
"admin_settings_field_severpay_return_url_label": "SeverPay Return URL",
"admin_settings_field_severpay_lifetime_minutes_label": "SeverPay Lifetime Minutes",
"admin_settings_field_severpay_lifetime_minutes_description": "Controls the 'SeverPay Lifetime Minutes' setting in admin overrides.",
"admin_settings_field_lava_enabled_label": "Enabled",
"admin_settings_field_lava_shop_id_label": "Shop ID",
"admin_settings_field_lava_secret_key_label": "Secret key",
"admin_settings_field_lava_secret_key_description": "Signs outgoing API requests (HMAC-SHA256 in the Signature header).",
"admin_settings_field_lava_webhook_secret_label": "Webhook secret",
"admin_settings_field_lava_webhook_secret_description": "The shop's additional key used to verify webhook signatures. Leave empty to reuse the secret key.",
"admin_settings_field_lava_base_url_label": "Base URL",
"admin_settings_field_lava_return_url_label": "Return URL",
"admin_settings_field_lava_lifetime_minutes_label": "Payment link lifetime (minutes)",
"admin_settings_field_lava_lifetime_minutes_description": "1..7200; leave empty for the LAVA default.",
"admin_settings_field_lava_include_services_label": "Payment services filter",
"admin_settings_field_lava_include_services_description": "Comma-separated LAVA pay services shown on the payment page (e.g. card,sbp). Empty shows everything enabled for the shop.",
"admin_settings_field_cryptopay_enabled_label": "CryptoPay Enabled",
"admin_settings_field_cryptopay_token_label": "CryptoPay Token",
"admin_settings_field_cryptopay_network_label": "CryptoPay Network",
+13
View File
@@ -1220,6 +1220,7 @@
"admin_settings_subsection_wata": "Wata",
"admin_settings_subsection_heleket": "Heleket",
"admin_settings_subsection_paykilla": "PayKilla",
"admin_settings_subsection_lava": "LAVA",
"admin_settings_provider_webhook_url": "Webhook URL",
"admin_settings_provider_webhook_url_hint": "Укажите этот адрес в настройках вебхуков провайдера.",
"admin_settings_panel_webhook_url_hint": "Укажите этот адрес как WEBHOOK_URL в Remnawave Panel.",
@@ -1772,6 +1773,18 @@
"admin_settings_field_severpay_return_url_label": "Return URL",
"admin_settings_field_severpay_lifetime_minutes_label": "Срок жизни ссылки (мин)",
"admin_settings_field_severpay_lifetime_minutes_description": "30..4320; пусто — значение провайдера",
"admin_settings_field_lava_enabled_label": "Включена",
"admin_settings_field_lava_shop_id_label": "Shop ID",
"admin_settings_field_lava_secret_key_label": "Секретный ключ",
"admin_settings_field_lava_secret_key_description": "Подписывает исходящие запросы к API (HMAC-SHA256 в заголовке Signature).",
"admin_settings_field_lava_webhook_secret_label": "Ключ вебхуков",
"admin_settings_field_lava_webhook_secret_description": "Дополнительный ключ магазина для проверки подписи вебхуков. Пусто — используется секретный ключ.",
"admin_settings_field_lava_base_url_label": "Base URL",
"admin_settings_field_lava_return_url_label": "Return URL",
"admin_settings_field_lava_lifetime_minutes_label": "Срок жизни ссылки (мин)",
"admin_settings_field_lava_lifetime_minutes_description": "1..7200; пусто — значение провайдера",
"admin_settings_field_lava_include_services_label": "Фильтр способов оплаты",
"admin_settings_field_lava_include_services_description": "Через запятую: способы оплаты LAVA на странице счёта (например card,sbp). Пусто — все доступные магазину.",
"admin_settings_field_cryptopay_enabled_label": "Включена",
"admin_settings_field_cryptopay_token_label": "Token",
"admin_settings_field_cryptopay_network_label": "Network",