from pydantic import BaseModel from typing import Optional from datetime import datetime from decimal import Decimal from enum import Enum class PaymentMethod(str, Enum): CASH = "cash" CREDIT_CARD = "credit_card" DEBIT_CARD = "debit_card" MOBILE_PAYMENT = "mobile_payment" class PaymentStatus(str, Enum): PENDING = "pending" PROCESSING = "processing" COMPLETED = "completed" FAILED = "failed" REFUNDED = "refunded" class PaymentSession(BaseModel): id: str order_id: int amount: Decimal payment_method: PaymentMethod status: PaymentStatus created_at: datetime class PaymentVerification(BaseModel): payment_id: str verification_code: str status: PaymentStatus message: Optional[str] = None class Transaction(BaseModel): id: str order_id: int amount: Decimal payment_method: PaymentMethod status: PaymentStatus created_at: datetime updated_at: Optional[datetime] = None reference_id: Optional[str] = None