Уточнен безопасный scope BotShop v0.2.1

Этот коммит содержится в:
Виктор
2026-05-18 09:40:10 +09:00
родитель af1cef3d11
Коммит a8b766f023
+47 -61
Просмотреть файл
@@ -1,52 +1,61 @@
# BotShop v0.2.0 # BotShop v0.2.1
BotShop — локальная платформа для запуска нескольких Telegram-магазинов из одной панели управления. BotShop — локальная платформа для запуска нескольких Telegram-магазинов из одной панели управления.
Проект рассчитан на легальную продажу цифровых и физических товаров: файлы, доступы, инструкции, мерч, услуги, коды, подписки, инфопродукты. В проекте нет механики тайников, скрытых адресов, обхода платёжных правил или автоподтверждения платежей по словам пользователя. Проект рассчитан на легальную продажу цифровых и физических товаров: файлы, доступы, инструкции, мерч, услуги, коды, подписки, инфопродукты.
## Что заложено ## Безопасный scope
- подключение нескольких Telegram-ботов через токен; В проекте реализуется обычный магазин:
- локальный режим без домена через Telegram polling;
- webhook-режим для сервера с HTTPS-доменом;
- главная бота: приветствие, выбор города, баланс, рефералка, последний заказ, поддержка;
- последовательность заказа: город → продукт → район/зона → тип/вариант → итог → оплата/отмена;
- оплата с баланса магазина;
- карта/СБП/банк с уникальной суммой для ручной идентификации;
- Bitcoin-реквизиты с подтверждением оператором;
- баланс пользователя через ledger: рефералы, пополнения, возвраты, списания;
- автовыдача товара после статуса `paid`;
- управление городами, районами, товарами, вариантами, остатками, заказами, платежами;
- базовые логи Telegram-событий и действий администратора;
- автоустановщик `install.sh`.
## Важная логика платежей - несколько Telegram-ботов в одной панели;
- каталог товаров;
- выбор города и зоны доставки;
- выбор товара и варианта;
- итоговая карточка заказа;
- баланс пользователя;
- реферальная программа;
- последний заказ;
- связь с поддержкой;
- ручная проверка оплаты оператором;
- выдача цифрового товара только после подтверждённой оплаты;
- журнал действий администратора и платежных решений.
Пользовательское нажатие `Я оплатил` не делает заказ оплаченным. Оно переводит платёж в проверку оператором. Автовыдача выполняется только после статуса `paid`. Не реализуется:
Для полностью автоматической оплаты нужен официальный платёжный API банка/эквайринга/крипто-провайдера. Уникальная сумма без API — это полуавтоматический режим с ручной проверкой. - продажа запрещённых товаров;
- скрытые адреса и тайники;
- автоматическое признание оплаты только по нажатию пользователя;
- обход платёжных правил;
- анонимная схема без проверяемого учёта.
## Логика заказа
1. Пользователь открывает бота.
2. Видит главное меню: каталог, баланс, рефералка, последний заказ, поддержка.
3. Выбирает город.
4. Выбирает зону доставки.
5. Выбирает товар.
6. Выбирает вариант.
7. Получает итоговую карточку заказа.
8. Выбирает действие: оплатить или отменить.
9. После сообщения о платеже заказ уходит оператору на проверку.
10. Оператор подтверждает оплату в панели.
11. Система выдаёт цифровой товар из остатков и пишет событие в аудит.
## Статусы заказа ## Статусы заказа
- `draft` — черновик; - `draft` — черновик;
- `waiting_payment` — ожидает оплату; - `waiting_payment` — ожидает оплату;
- `payment_review`пользователь заявил оплату, оператор проверяет; - `payment_review`ожидает проверки оператором;
- `paid` — оплата подтверждена; - `paid` — оплата подтверждена;
- `delivered` — товар выдан; - `delivered` — товар выдан;
- `cancelled` — отменён; - `cancelled` — отменён;
- `refunded` — возвращён; - `refunded` — возвращён;
- `expired` — истёк срок оплаты; - `expired` — истёк срок оплаты;
- `rejected`оплата отклонена. - `rejected` — отклонён.
## Требования ## Установка
- Ubuntu/Debian сервер или локальная VM;
- PHP 8.1+;
- MySQL 5.7+/8+ или MariaDB;
- Nginx;
- доступ в интернет для Telegram Bot API.
## Локальная установка без домена
```bash ```bash
sudo apt update sudo apt update
@@ -57,7 +66,7 @@ cd botshop-installer
sudo bash install.sh --local sudo bash install.sh --local
``` ```
После установки скрипт покажет: После установки:
```text ```text
Админка: http://IP-СЕРВЕРА/login Админка: http://IP-СЕРВЕРА/login
@@ -65,6 +74,8 @@ Email: admin@local.test
Пароль: сгенерированный пароль Пароль: сгенерированный пароль
``` ```
## Локальный режим
В локальном режиме домен и SSL не нужны. Telegram работает через polling-сервис: В локальном режиме домен и SSL не нужны. Telegram работает через polling-сервис:
```bash ```bash
@@ -72,27 +83,6 @@ systemctl status botshop-polling --no-pager
journalctl -u botshop-polling -f journalctl -u botshop-polling -f
``` ```
## Установка с собственными данными
```bash
sudo bash install.sh --local \
--admin-email admin@example.local \
--admin-pass 'СЛОЖНЫЙ_ПАРОЛЬ' \
--db-pass 'СЛОЖНЫЙ_ПАРОЛЬ_БД'
```
## После установки
1. Откройте админку: `http://IP-СЕРВЕРА/login`.
2. Войдите под админом.
3. Создайте Telegram-бота через `@BotFather`.
4. В панели откройте «Боты».
5. Добавьте токен.
6. Поставьте статус `active`.
7. В локальном режиме webhook не нужен.
8. Добавьте город, район, товар, вариант, остатки и реквизиты.
9. Напишите `/start` своему Telegram-боту.
## Структура ## Структура
```text ```text
@@ -104,14 +94,10 @@ storage/config.php # создаётся installer'ом, не хранитс
storage/logs/ # логи storage/logs/ # логи
``` ```
## Ближайший roadmap ## Roadmap
- v0.2.1 — экран баланса, рефералки и последнего заказа в Telegram; - v0.2.1 — безопасный scope, совместимость схемы, главное меню бота;
- v0.2.2 — админ-раздел остатков и автовыдачи; - v0.2.2 — раздел остатков и выдачи цифрового товара;
- v0.2.3 — подтверждение платежа оператором с автоматической выдачей; - v0.2.3 — операторская проверка оплаты и аудит;
- v0.2.4 — поддержка в панели; - v0.2.4 — поддержка в панели;
- v0.3.0 — аккуратный UI, роли операторов и журнал аудита. - v0.3.0 — роли операторов, улучшенный UI и журнал действий.
## Версия
`0.2.0`