mirror of
http://88.130.71.182:3000/BlitTech/deals24togo_be.git
synced 2026-06-12 23:33:21 +00:00
Initial commit
This commit is contained in:
64
app/schemas/payment.py
Normal file
64
app/schemas/payment.py
Normal file
@@ -0,0 +1,64 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user