diff --git a/src/locales/en.json b/src/locales/en.json
index 1fd7bdd..feb6068 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1637,6 +1637,8 @@
"openUrlDirectHint": "ON — the payment link opens immediately, without the intermediate button panel. OFF — an \"Open payment\" button is shown. Inside Telegram the link opens in the external browser either way (otherwise paying via a bank app/SBP fails); after payment the user returns to the result page. Stars/CryptoBot (t.me/ links) always open natively and ignore this flag.",
"displayName": "Display name",
"displayNameHint": "Leave empty for default name",
+ "description": "Description",
+ "descriptionHint": "Shown under the method name. Empty for default text",
"subOptions": "Payment options",
"minAmount": "Min amount (kopeks)",
"maxAmount": "Max amount (kopeks)",
diff --git a/src/locales/ru.json b/src/locales/ru.json
index 255e913..2b45f22 100644
--- a/src/locales/ru.json
+++ b/src/locales/ru.json
@@ -1649,6 +1649,8 @@
"openUrlDirectHint": "ВКЛ — ссылка оплаты открывается сразу, без промежуточной панели с кнопкой. ВЫКЛ — показывается кнопка «Открыть оплату». В Telegram ссылка в обоих случаях открывается во внешнем браузере (иначе оплата через банковское приложение/СБП не срабатывает), после оплаты — возврат на страницу результата. Stars/CryptoBot (t.me/-ссылки) всегда открываются нативно, флаг к ним не применяется.",
"displayName": "Отображаемое имя",
"displayNameHint": "Оставьте пустым для имени по умолчанию",
+ "description": "Описание",
+ "descriptionHint": "Показывается под названием метода. Пусто — текст по умолчанию",
"subOptions": "Варианты оплаты",
"minAmount": "Мин. сумма (коп.)",
"maxAmount": "Макс. сумма (коп.)",
diff --git a/src/pages/AdminPaymentMethodEdit.tsx b/src/pages/AdminPaymentMethodEdit.tsx
index c11bbf5..7614e7b 100644
--- a/src/pages/AdminPaymentMethodEdit.tsx
+++ b/src/pages/AdminPaymentMethodEdit.tsx
@@ -232,6 +232,7 @@ export default function AdminPaymentMethodEdit() {
// Local state for editing
const [isEnabled, setIsEnabled] = useState(false);
const [customName, setCustomName] = useState('');
+ const [customDesc, setCustomDesc] = useState('');
const [subOptions, setSubOptions] = useState>({});
const [minAmount, setMinAmount] = useState('');
const [maxAmount, setMaxAmount] = useState('');
@@ -249,6 +250,7 @@ export default function AdminPaymentMethodEdit() {
if (config) {
setIsEnabled(config.is_enabled);
setCustomName(config.display_name || '');
+ setCustomDesc(config.description || '');
setSubOptions(config.sub_options || {});
setMinAmount(config.min_amount_kopeks ?? '');
setMaxAmount(config.max_amount_kopeks ?? '');
@@ -290,6 +292,13 @@ export default function AdminPaymentMethodEdit() {
data.reset_display_name = true;
}
+ // Description
+ if (customDesc.trim()) {
+ data.description = customDesc.trim();
+ } else {
+ data.reset_description = true;
+ }
+
// Sub-options
if (config.available_sub_options) {
data.sub_options = subOptions;
@@ -478,6 +487,22 @@ export default function AdminPaymentMethodEdit() {
+ {/* Description */}
+
+
+
+
{/* Sub-options */}
{config.available_sub_options && config.available_sub_options.length > 0 && (
diff --git a/src/pages/Balance.tsx b/src/pages/Balance.tsx
index b277371..8378252 100644
--- a/src/pages/Balance.tsx
+++ b/src/pages/Balance.tsx
@@ -336,11 +336,11 @@ export default function Balance() {
onClick={() => method.is_available && navigate(`/balance/top-up/${method.id}`)}
>
- {translatedName || method.name}
+ {method.name || translatedName}
- {(translatedDesc || method.description) && (
+ {(method.description || translatedDesc) && (
- {translatedDesc || method.description}
+ {method.description || translatedDesc}
)}
diff --git a/src/pages/TopUpMethodSelect.tsx b/src/pages/TopUpMethodSelect.tsx
index 0fd0a17..269ef34 100644
--- a/src/pages/TopUpMethodSelect.tsx
+++ b/src/pages/TopUpMethodSelect.tsx
@@ -74,12 +74,12 @@ export default function TopUpMethodSelect() {
- {translatedName || method.name}
+ {method.name || translatedName}
- {(translatedDesc || method.description) && (
+ {(method.description || translatedDesc) && (
- {translatedDesc || method.description}
+ {method.description || translatedDesc}
)}
diff --git a/src/types/index.ts b/src/types/index.ts
index 5e3deb2..9181884 100644
--- a/src/types/index.ts
+++ b/src/types/index.ts
@@ -689,6 +689,7 @@ export interface PaymentMethodConfig {
is_enabled: boolean;
display_name: string | null;
default_display_name: string;
+ description: string | null;
sub_options: Record | null;
available_sub_options: PaymentMethodSubOptionInfo[] | null;
quick_amounts: number[] | null;