feat: implement billing system with Pally integration

- Added billing models and repository for handling bills.
- Introduced BillingService to manage payment initiation and bill creation.
- Updated user service to remove ticket-related functionality.
- Refactored settings to include new billing-related fields.
- Removed ticket-related handlers and schemas.
- Added new billing handlers for processing payments.
- Updated database schema with new bills table and status enum.
- Enhanced utility functions to calculate prices considering discounts.
- Introduced prehandling for non-private messages.
- Updated main application to initialize new billing services and repositories.
This commit is contained in:
2026-04-23 19:55:51 +07:00
parent 8290d18235
commit d98383285e
29 changed files with 705 additions and 305 deletions

View File

@@ -1,5 +1,3 @@
from db.models.tickets import TicketStatus
# ============================================================
# PREMIUM EMOJI
# ============================================================
@@ -42,13 +40,6 @@ _DIVIDER = "──────────────────────
# МАППИНГИ
# ============================================================
TICKET_STATUS_EMOJIS = {
TicketStatus.CLOSED.value: "🌑", # Более сдержанно
TicketStatus.OPEN.value: "📡", # В эфире
TicketStatus.PENDING.value: "",
}
# ============================================================
# СТАТУСЫ ПОДПИСКИ
# ============================================================
@@ -173,6 +164,22 @@ WHITELISTS_ALREADY_ON = "Белые списки уже активны."
CHECKOUT_PAYMENT_CHOICE = "Пока что без автоплатежа. Нажмите кнопку ниже и обратитесь в поддержку для оплаты и активации подписки."
# ============================================================
# BILLING
# ============================================================
_BILL_TEMPLATE = (
"<b>💸 Счёт на {amount}₽</b>\n\n"
"<i>‼️ Вам придёт уведомление в течение нескольких минут после завершения платежа.</i>\n"
"<b>🔒 Способ оплаты:</b> <i>{provider}</i>\n\n"
)
_BILL_LINK = f"<b>{MALENIA_LINK} Ссылка на оплату:</b>"
BILL_CREATION = _BILL_TEMPLATE + _DIVIDER + GENERAL_PROCESSING
BILL_CREATED = _BILL_TEMPLATE + _DIVIDER + _BILL_LINK
# ============================================================
# ПОДДЕРЖКА