mirror of
http://88.130.71.182:3000/BlitTech/deals24togo_be.git
synced 2026-06-12 23:33:21 +00:00
65 lines
1.5 KiB
Python
65 lines
1.5 KiB
Python
"""Payment-related Pydantic schemas."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Any, Dict, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class PaymentInitiate(BaseModel):
|
|
type: str # 'subscription' | 'purchase'
|
|
plan: Optional[str] = None # 'monthly' | 'yearly' (subscription only)
|
|
listing_id: Optional[str] = None # purchase only
|
|
|
|
|
|
class PaymentResponse(BaseModel):
|
|
id: str
|
|
transaction_id: str
|
|
type: str
|
|
payer_id: Optional[str] = None
|
|
amount: float
|
|
currency: str
|
|
status: str
|
|
payment_method: Optional[str] = None
|
|
operator_id: Optional[str] = None
|
|
metadata: Optional[Dict[str, Any]] = None
|
|
created_at: datetime
|
|
paid_at: Optional[datetime] = None
|
|
|
|
|
|
class PaymentInitiateResponse(BaseModel):
|
|
payment_url: str
|
|
transaction_id: str
|
|
|
|
|
|
class PaymentReceiptResponse(BaseModel):
|
|
id: str
|
|
transaction_id: str
|
|
type: str
|
|
amount: float
|
|
currency: str
|
|
status: str
|
|
payment_method: Optional[str] = None
|
|
operator_id: Optional[str] = None
|
|
metadata: Optional[Dict[str, Any]] = None
|
|
created_at: datetime
|
|
paid_at: Optional[datetime] = None
|
|
# Enriched fields
|
|
payer_name: Optional[str] = None
|
|
payer_email: Optional[str] = None
|
|
plan_label: Optional[str] = None
|
|
listing_title: Optional[str] = None
|
|
|
|
|
|
class SubscriptionResponse(BaseModel):
|
|
id: str
|
|
agency_id: str
|
|
plan: str
|
|
status: str
|
|
starts_at: datetime
|
|
ends_at: datetime
|
|
payment_id: Optional[str] = None
|
|
created_at: datetime
|