Уточнен безопасный scope BotShop v0.2.1
Этот коммит содержится в:
+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`
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user