feat(lava): автопродление Lava на странице подписки

Парная фронтовая часть к эндпоинтам /cabinet/subscription/lava-recurrent
(бот: 0dea2182). Блок — сиблинг Platega-блока с той же семантикой состояний
(off/pending/active/past_due), поллинг раз в 8с пока привязка PENDING.

Отличие от Platega в подписи: у Lava период задан продуктом в кабинете
провайдера и приезжает числом дней, поэтому канонические значения (30/90/365
и т.д.) показываются словами, а произвольные — как «раз в N дн.».

utils/lavaRecurring.ts: строгое распознавание 403 'Lava recurrent disabled'
(другие 403-guard'ы прятать нельзя), деградация неизвестного статуса в off.
Локали ru/en/zh/fa (+25 строк каждая, плейсхолдеры сверены). 7 тестов утилиты.
This commit is contained in:
Fringg
2026-07-29 16:34:43 +03:00
parent 62aaa5d7c9
commit 2dce539da2
9 changed files with 474 additions and 0 deletions

View File

@@ -600,6 +600,31 @@
"purchaseButton": "⚡ 通过SBP自动扣款订阅",
"purchaseHint": "首次扣款即在银行应用中确认绑定;续费将按资费周期自动扣款。"
},
"lavaRecurring": {
"title": "Lava 自动续订",
"connect": "连接",
"payFirst": "支付首期账单",
"cancel": "关闭",
"confirmCancel": "要关闭 Lava 自动续订吗?订阅将不再自动续订。",
"cancelled": "已关闭 Lava 自动续订",
"enableError": "无法开启 Lava 自动续订",
"cancelError": "无法关闭 Lava 自动续订",
"statusPending": "等待支付首期账单",
"statusActive": "已启用",
"statusPastDue": "扣款失败 — 请重试",
"nextCharge": "下次扣款 {{date}}",
"amountPerPeriod": "{{amount}} ₽ {{period}}",
"amountPerDays": "每 {{days}} 天 {{amount}} ₽",
"period": {
"day": "每天",
"week": "每周",
"month": "每月",
"quarter": "每季度",
"halfYear": "每半年",
"year": "每年"
},
"autopayHint": "订阅将通过 Lava 自动续订"
},
"backToList": "返回订阅列表",
"confirmDelete": "删除订阅?",
"cta": {