Square Payments

This commit is contained in:
James Pattinson
2025-11-12 16:09:38 +00:00
parent be2426c078
commit 0f74333a22
19 changed files with 1828 additions and 85 deletions

View File

@@ -22,6 +22,9 @@ from .schemas import (
PaymentCreate,
PaymentUpdate,
PaymentResponse,
SquarePaymentRequest,
SquarePaymentResponse,
SquareRefundRequest,
MessageResponse,
EmailTemplateBase,
EmailTemplateCreate,
@@ -53,6 +56,9 @@ __all__ = [
"PaymentCreate",
"PaymentUpdate",
"PaymentResponse",
"SquarePaymentRequest",
"SquarePaymentResponse",
"SquareRefundRequest",
"MessageResponse",
"EmailTemplateBase",
"EmailTemplateCreate",

View File

@@ -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