Files
bakery-ia/shared/exceptions/payment_exceptions.py
2026-01-15 22:06:36 +01:00

80 lines
3.1 KiB
Python

"""
Payment-related exceptions for the atomic payment architecture
"""
class PaymentException(Exception):
"""Base class for payment-related exceptions"""
pass
class PaymentVerificationRequired(PaymentException):
"""Exception raised when payment verification is required before proceeding"""
def __init__(self, message: str = "Payment verification required", setup_intent_id: str = None, client_secret: str = None):
self.message = message
self.setup_intent_id = setup_intent_id
self.client_secret = client_secret
super().__init__(message)
class ThreeDSAuthenticationRequired(PaymentException):
"""Exception raised when 3DS authentication is required"""
def __init__(self, setup_intent_id: str, client_secret: str, action_type: str, **kwargs):
self.setup_intent_id = setup_intent_id
self.client_secret = client_secret
self.action_type = action_type
self.extra_data = kwargs
message = f"3DS authentication required (action: {action_type})"
super().__init__(message)
class PaymentMethodInvalid(PaymentException):
"""Exception raised when payment method is invalid"""
def __init__(self, message: str = "Payment method is invalid"):
super().__init__(message)
class PaymentFailed(PaymentException):
"""Exception raised when payment fails"""
def __init__(self, message: str = "Payment failed"):
super().__init__(message)
class SubscriptionCreationFailed(PaymentException):
"""Exception raised when subscription creation fails"""
def __init__(self, message: str = "Subscription creation failed"):
super().__init__(message)
class PaymentProviderError(PaymentException):
"""Exception raised when there's an error with the payment provider"""
def __init__(self, message: str = "Payment provider error"):
super().__init__(message)
class PaymentVerificationError(PaymentException):
"""Exception raised when payment verification fails"""
def __init__(self, message: str = "Payment verification failed"):
super().__init__(message)
class SetupIntentError(PaymentException):
"""Exception raised when SetupIntent operations fail"""
def __init__(self, message: str = "SetupIntent operation failed"):
super().__init__(message)
class SubscriptionUpdateFailed(PaymentException):
"""Exception raised when subscription update fails"""
def __init__(self, message: str = "Subscription update failed"):
super().__init__(message)
class PaymentServiceError(PaymentException):
"""General payment service error"""
def __init__(self, message: str = "Payment service error"):
super().__init__(message)
class PaymentMethodError(PaymentException):
"""Exception raised when payment method operations fail"""
def __init__(self, message: str = "Payment method operation failed"):
super().__init__(message)
class CustomerUpdateFailed(PaymentException):
"""Exception raised when customer update operations fail"""
def __init__(self, message: str = "Customer update failed"):
super().__init__(message)