Square Payments
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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