Implement multi-card payment method management and enhance user notifications

- Added support for saving multiple payment methods, allowing users to bind and manage their cards effectively.
- Introduced a new paginated list view for displaying saved payment methods, improving user experience.
- Enhanced user notifications for successful binding of payment methods, including localized messages.
- Updated the database models and data access layer to accommodate multi-card functionality.
- Refactored existing payment method handlers to integrate with the new multi-card system.
This commit is contained in:
machka-pasla
2025-09-04 17:11:18 +03:00
parent 257597ccb7
commit 6b5828ea51
8 changed files with 310 additions and 31 deletions
+4 -3
View File
@@ -793,8 +793,9 @@ class SubscriptionService:
# Tribute is paid externally; we do not auto-charge here
return True
billing = await user_billing_dal.get_user_billing(session, sub.user_id)
if not billing or not billing.yookassa_payment_method_id:
from db.dal.user_billing_dal import get_user_default_payment_method
default_pm = await get_user_default_payment_method(session, sub.user_id)
if not default_pm:
logging.info(f"Auto-renew skipped: no saved payment method for user {sub.user_id}")
return False
@@ -823,7 +824,7 @@ class SubscriptionService:
currency="RUB",
description=f"Auto-renewal for {months} months",
metadata=metadata,
payment_method_id=billing.yookassa_payment_method_id,
payment_method_id=default_pm.provider_payment_method_id,
save_payment_method=False,
capture=True,
)