32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
from aiogram import types, Router, F
|
|
from sqlalchemy import select
|
|
|
|
from app.core.logger import make_log
|
|
from app.core.models import StarsInvoice
|
|
|
|
router = Router()
|
|
|
|
|
|
async def t_pre_checkout_query_stars_processing(pre_checkout_query: types.PreCheckoutQuery, user=None, db_session=None,
|
|
chat_wrap=None, **extra):
|
|
make_log('t_pre_checkout_query_stars_processing', f"PreCheckoutQuery: {pre_checkout_query}")
|
|
make_log('t_pre_checkout_query_stars_processing', f"User: {user}, db_session: {db_session}, chat_wrap: {chat_wrap}, extra: {extra}")
|
|
|
|
invoice_id = pre_checkout_query.invoice_payload
|
|
|
|
result = await db_session.execute(
|
|
select(StarsInvoice).where(StarsInvoice.external_id == invoice_id)
|
|
)
|
|
existing_invoice = result.scalars().first()
|
|
if not existing_invoice:
|
|
return await pre_checkout_query.answer(ok=False, error_message="Invoice not found")
|
|
|
|
if existing_invoice.paid:
|
|
return await pre_checkout_query.answer(ok=False, error_message="Invoice already paid")
|
|
|
|
return await pre_checkout_query.answer(ok=True)
|
|
|
|
|
|
|
|
router.pre_checkout_query.register(t_pre_checkout_query_stars_processing)
|