diff --git a/app/services/payment/heleket.py b/app/services/payment/heleket.py index ffff7b90..9149d0c6 100644 --- a/app/services/payment/heleket.py +++ b/app/services/payment/heleket.py @@ -362,6 +362,10 @@ class HeleketPaymentMixin: await db.commit() await db.refresh(user) + # Перезагружаем пользователя с зависимостями после коммита, + # чтобы избежать lazy load в async-контексте (MissingGreenlet) + user = await get_user_by_id(db, user.id) or user + if getattr(self, 'bot', None): topup_status = '🆕 Первое пополнение' if was_first_topup else '🔄 Пополнение' referrer_info = format_referrer_info(user) diff --git a/app/services/payment/wata.py b/app/services/payment/wata.py index 3507034a..98c2f760 100644 --- a/app/services/payment/wata.py +++ b/app/services/payment/wata.py @@ -472,7 +472,10 @@ class WataPaymentMixin: user.balance_kopeks += payment.amount_kopeks user.updated_at = datetime.utcnow() await db.commit() - await db.refresh(user) + user = await payment_module.get_user_by_id(db, user.id) + if not user: + logger.error('Пользователь %s не найден после коммита WATA', payment.user_id) + return payment promo_group = user.get_primary_promo_group() subscription = getattr(user, 'subscription', None)