site: offer + privacy policy templates for YooKassa compliance, README payments section
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
5b30d1f148
commit
7b5fd8dceb
4 changed files with 156 additions and 1 deletions
11
README.md
11
README.md
|
|
@ -89,6 +89,17 @@ bash <(curl -Ls https://panel.example.com/install/ТОКЕН.sh)
|
|||
|
||||
Вставляешь на чистый сервер (тот же Ubuntu 22/24 или Debian 11/12) — нода сама всё ставит и регистрируется. Если включал WS+TLS — скрипт выпустит для неё отдельный Let's Encrypt сертификат (нужна ещё одна A-запись, см. таблицу выше). Если включал Hysteria2 — поднимет отдельный процесс на UDP.
|
||||
|
||||
## Приём оплаты
|
||||
|
||||
По умолчанию бот выдаёт подписки бесплатно по кнопке — платежи выключены (`PAYMENTS_ENABLED=false`). Чтобы продавать доступ:
|
||||
|
||||
1. Заведи аккаунт в [ЮKassa](https://yookassa.ru) и/или [Platega](https://platega.io) — оба требуют реального ИП/самозанятости и проходят собственную проверку (реквизиты, сайт с офертой). Панель это не автоматизирует.
|
||||
2. В `.env`: `PAYMENTS_ENABLED=true`, цены на тарифы (`PRICE_7D`, `PRICE_1M` и т.д. в рублях), и креды провайдера(ов) — `YOOKASSA_SHOP_ID`/`YOOKASSA_SECRET_KEY` и/или `PLATEGA_MERCHANT_ID`/`PLATEGA_SECRET`, включив соответствующий `*_ENABLED`.
|
||||
3. В личном кабинете провайдера пропиши webhook на `https://<PANEL_DOMAIN>/payments/webhook/yookassa` и/или `.../payments/webhook/platega`.
|
||||
4. `mbs restart` — бот начнёт показывать способ оплаты вместо мгновенной выдачи, подписка активируется автоматически по вебхуку с уведомлением в Telegram.
|
||||
|
||||
Заполни реальными данными `site/offer.html` (публичная оферта) и `site/privacy.html` (политика конфиденциальности) перед подачей заявки в ЮKassa — они нужны для их проверки, шаблоны уже на сайте (`/offer.html`, `/privacy.html`), но с плейсхолдерами вместо твоих реквизитов.
|
||||
|
||||
## Разработка / вклад
|
||||
|
||||
Код простой — без сборки фронта, без ORM, без лишних абстракций. `admin.html` — один файл, vanilla JS. Питон-часть — обычные функции, SQLite напрямую.
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@
|
|||
|
||||
<footer>
|
||||
<div class="wrap">
|
||||
example.com — <a href="/cabinet.html">личный кабинет</a> — подписка через <a href="https://sub.example.com" target="_blank">sub.example.com</a>
|
||||
example.com — <a href="/cabinet.html">личный кабинет</a> — подписка через <a href="https://sub.example.com" target="_blank">sub.example.com</a> — <a href="/offer.html">оферта</a> — <a href="/privacy.html">конфиденциальность</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
|
|
|||
73
site/offer.html
Normal file
73
site/offer.html
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
<!doctype html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>MBS Panel — Публичная оферта</title>
|
||||
<style>
|
||||
:root {
|
||||
--bg: #0a0b0f; --card: #131519; --border: #1e2128;
|
||||
--text: #eceef2; --muted: #868c99; --accent: #7c6cf0;
|
||||
--ease: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0; background: var(--bg); color: var(--text);
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||
-webkit-font-smoothing: antialiased; line-height: 1.6;
|
||||
}
|
||||
a { color: var(--accent); }
|
||||
.wrap { max-width: 720px; margin: 0 auto; padding: 48px 24px 80px; }
|
||||
.back { color: var(--muted); text-decoration: none; font-size: 14px; }
|
||||
.back:hover { color: var(--text); }
|
||||
h1 { font-size: 26px; margin: 24px 0 6px; letter-spacing: -0.02em; }
|
||||
.updated { color: var(--muted); font-size: 13px; margin-bottom: 36px; }
|
||||
h2 { font-size: 17px; margin: 36px 0 10px; font-weight: 600; }
|
||||
p, li { color: var(--text); font-size: 14.5px; }
|
||||
.muted { color: var(--muted); }
|
||||
.fill { color: var(--accent); background: rgba(124,108,240,0.1); padding: 1px 5px; border-radius: 4px; }
|
||||
ol { padding-left: 20px; }
|
||||
li { margin-bottom: 8px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<a class="back" href="/">← На главную</a>
|
||||
<h1>Публичная оферта</h1>
|
||||
<p class="updated">Действует с <span class="fill">[дата]</span></p>
|
||||
|
||||
<p>Настоящий документ является публичной офертой <span class="fill">[ФИО ИП / наименование самозанятого или юрлица]</span>, <span class="fill">[ИНН]</span> (далее — «Исполнитель»), адресованной любому дееспособному физическому лицу (далее — «Клиент»), на заключение договора о предоставлении доступа к VPN-сервису на условиях, указанных ниже. Оплата услуги означает полное и безоговорочное принятие условий оферты (акцепт).</p>
|
||||
|
||||
<h2>1. Предмет договора</h2>
|
||||
<p>Исполнитель предоставляет Клиенту доступ к серверу VPN (VLESS/Hysteria2) на срок, соответствующий выбранному тарифу, через Telegram-бота <span class="fill">[@ваш_бот]</span>. Доступ выдаётся автоматически после подтверждения оплаты.</p>
|
||||
|
||||
<h2>2. Стоимость и порядок оплаты</h2>
|
||||
<ol>
|
||||
<li>Стоимость тарифов указана в боте на момент оформления и может изменяться Исполнителем в одностороннем порядке — уже оплаченные периоды это не затрагивает.</li>
|
||||
<li>Оплата принимается через платёжных провайдеров ЮKassa / Platega банковской картой или СБП. Реквизиты карты Исполнителю не передаются и не хранятся — оплата проходит на стороне провайдера.</li>
|
||||
<li>Доступ активируется автоматически в течение нескольких минут после поступления подтверждения оплаты от провайдера.</li>
|
||||
</ol>
|
||||
|
||||
<h2>3. Срок действия и продление</h2>
|
||||
<p>Доступ предоставляется на срок выбранного тарифа (от 7 дней до 1 года) и автоматически прекращается по истечении срока. Продление — отдельной оплатой, автосписание не производится.</p>
|
||||
|
||||
<h2>4. Возврат средств</h2>
|
||||
<p>Возврат возможен в течение <span class="fill">[N]</span> часов с момента оплаты, если доступ ни разу не был использован (не было подключений к серверу), — по обращению в поддержку <span class="fill">[контакт]</span>. После начала использования услуга считается оказанной.</p>
|
||||
|
||||
<h2>5. Права и обязанности сторон</h2>
|
||||
<ol>
|
||||
<li>Клиент обязуется не использовать доступ для рассылки спама, DDoS-атак, распространения вредоносного ПО и иной деятельности, запрещённой законодательством РФ.</li>
|
||||
<li>Исполнитель вправе приостановить доступ Клиента при нарушении п. 5.1 без возврата средств.</li>
|
||||
<li>Исполнитель не гарантирует бесперебойную работу сервиса на 100% времени — возможны технические перерывы для обслуживания.</li>
|
||||
</ol>
|
||||
|
||||
<h2>6. Реквизиты Исполнителя</h2>
|
||||
<p class="muted">
|
||||
<span class="fill">[ФИО / наименование]</span><br>
|
||||
ИНН <span class="fill">[номер]</span><br>
|
||||
Email: <span class="fill">[email]</span><br>
|
||||
Telegram: <span class="fill">[контакт поддержки]</span>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
71
site/privacy.html
Normal file
71
site/privacy.html
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
<!doctype html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>MBS Panel — Политика конфиденциальности</title>
|
||||
<style>
|
||||
:root {
|
||||
--bg: #0a0b0f; --card: #131519; --border: #1e2128;
|
||||
--text: #eceef2; --muted: #868c99; --accent: #7c6cf0;
|
||||
--ease: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0; background: var(--bg); color: var(--text);
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||
-webkit-font-smoothing: antialiased; line-height: 1.6;
|
||||
}
|
||||
a { color: var(--accent); }
|
||||
.wrap { max-width: 720px; margin: 0 auto; padding: 48px 24px 80px; }
|
||||
.back { color: var(--muted); text-decoration: none; font-size: 14px; }
|
||||
.back:hover { color: var(--text); }
|
||||
h1 { font-size: 26px; margin: 24px 0 6px; letter-spacing: -0.02em; }
|
||||
.updated { color: var(--muted); font-size: 13px; margin-bottom: 36px; }
|
||||
h2 { font-size: 17px; margin: 36px 0 10px; font-weight: 600; }
|
||||
p, li { color: var(--text); font-size: 14.5px; }
|
||||
.muted { color: var(--muted); }
|
||||
.fill { color: var(--accent); background: rgba(124,108,240,0.1); padding: 1px 5px; border-radius: 4px; }
|
||||
ol, ul { padding-left: 20px; }
|
||||
li { margin-bottom: 8px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<a class="back" href="/">← На главную</a>
|
||||
<h1>Политика конфиденциальности</h1>
|
||||
<p class="updated">Действует с <span class="fill">[дата]</span></p>
|
||||
|
||||
<p>Настоящая политика описывает, какие данные собирает и как обрабатывает <span class="fill">[ФИО ИП / наименование]</span> (далее — «Оператор») при использовании Telegram-бота и сайта MBS Panel.</p>
|
||||
|
||||
<h2>1. Какие данные собираются</h2>
|
||||
<ul>
|
||||
<li>Telegram ID и username — для выдачи и учёта подписки, идентификации в боте.</li>
|
||||
<li>Технический идентификатор VPN-клиента (UUID) — для настройки доступа на сервере, без привязки к личности.</li>
|
||||
<li>Данные об оплате (сумма, статус, дата, идентификатор транзакции платёжного провайдера) — реквизиты карты Оператору не передаются и не хранятся, это зона ответственности ЮKassa/Platega.</li>
|
||||
<li>IP-адрес — временно, только для защиты от злоупотреблений (рейт-лимиты), не сохраняется в привязке к трафику пользователя.</li>
|
||||
</ul>
|
||||
<p class="muted">Оператор не собирает и не хранит журнал посещаемых через VPN сайтов и не ведёт логи трафика клиентов.</p>
|
||||
|
||||
<h2>2. Цели обработки</h2>
|
||||
<ul>
|
||||
<li>Предоставление и продление доступа к VPN-сервису.</li>
|
||||
<li>Обработка оплаты и подтверждение транзакций.</li>
|
||||
<li>Связь с пользователем по вопросам работы сервиса.</li>
|
||||
</ul>
|
||||
|
||||
<h2>3. Хранение и передача третьим лицам</h2>
|
||||
<p>Данные хранятся на серверах Оператора и не передаются третьим лицам, кроме платёжных провайдеров (ЮKassa, Platega) в объёме, необходимом для обработки оплаты, и в случаях, прямо предусмотренных законодательством РФ.</p>
|
||||
|
||||
<h2>4. Права пользователя</h2>
|
||||
<p>Пользователь вправе запросить удаление своих данных и прекращение обработки, обратившись на <span class="fill">[email/контакт поддержки]</span>. Удаление данных влечёт прекращение доступа к активным подпискам.</p>
|
||||
|
||||
<h2>5. Контакты</h2>
|
||||
<p class="muted">
|
||||
<span class="fill">[ФИО / наименование]</span><br>
|
||||
Email: <span class="fill">[email]</span><br>
|
||||
Telegram: <span class="fill">[контакт поддержки]</span>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue