Square Payments
This commit is contained in:
@@ -163,6 +163,36 @@ class PaymentResponse(BaseModel):
|
||||
created_at: datetime
|
||||
|
||||
|
||||
# Square Payment Schemas
|
||||
class SquarePaymentRequest(BaseModel):
|
||||
"""Request schema for Square payment processing"""
|
||||
source_id: str = Field(..., description="Payment source ID from Square Web Payments SDK")
|
||||
tier_id: int = Field(..., description="Membership tier ID to create membership for")
|
||||
amount: float = Field(..., gt=0, description="Payment amount in GBP")
|
||||
idempotency_key: Optional[str] = Field(None, description="Unique key to prevent duplicate payments")
|
||||
note: Optional[str] = Field(None, description="Optional payment note")
|
||||
|
||||
|
||||
class SquarePaymentResponse(BaseModel):
|
||||
"""Response schema for Square payment"""
|
||||
success: bool
|
||||
payment_id: Optional[str] = None
|
||||
status: Optional[str] = None
|
||||
amount: Optional[float] = None
|
||||
currency: Optional[str] = None
|
||||
receipt_url: Optional[str] = None
|
||||
errors: Optional[list[str]] = None
|
||||
database_payment_id: Optional[int] = None
|
||||
membership_id: Optional[int] = Field(None, description="Created membership ID")
|
||||
|
||||
|
||||
class SquareRefundRequest(BaseModel):
|
||||
"""Request schema for Square payment refund"""
|
||||
payment_id: int = Field(..., description="Database payment ID")
|
||||
amount: Optional[float] = Field(None, gt=0, description="Amount to refund (None for full refund)")
|
||||
reason: Optional[str] = Field(None, description="Reason for refund")
|
||||
|
||||
|
||||
# Message Response
|
||||
class MessageResponse(BaseModel):
|
||||
message: str
|
||||
|
||||
Reference in New Issue
Block a user