Coverage for packages/epoint/src/integrify/epoint/schemas/request.py: 100%
62 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-19 02:39 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-19 02:39 +0000
1from decimal import Decimal
2from typing import Any
4from integrify.epoint import env
5from integrify.schemas import PayloadBaseModel
6from pydantic import AliasChoices, Field
9class MinimalPaymentRequestSchema(PayloadBaseModel):
10 amount: Decimal
11 currency: str
12 order_id: str
15class BasePaymentRequestSchema(MinimalPaymentRequestSchema):
16 success_redirect_url: str | None = env.EPOINT_SUCCESS_REDIRECT_URL
17 error_redirect_url: str | None = env.EPOINT_FAILED_REDIRECT_URL
18 description: str | None = None
21##############################################################################
22class PaymentRequestSchema(BasePaymentRequestSchema):
23 other_attr: dict | None = None
26class GetTransactionStatusRequestSchema(PayloadBaseModel):
27 transaction: str = Field(validation_alias='transaction_id')
30class SaveCardRequestSchema(PayloadBaseModel):
31 pass
34class PayWithSavedCardRequestSchema(MinimalPaymentRequestSchema):
35 card_id: str
38class PayAndSaveCardRequestSchema(BasePaymentRequestSchema):
39 description: str
42class PayoutRequestSchema(MinimalPaymentRequestSchema):
43 card_id: str
44 description: str | None = None
47class RefundRequestSchema(PayloadBaseModel):
48 transaction: str = Field(validation_alias='transaction_id')
49 currency: str
50 amount: Decimal | None = None
53class SplitPayRequestSchema(BasePaymentRequestSchema):
54 split_user: str = Field(validation_alias='split_user_id')
55 split_amount: Decimal
56 other_attr: dict | None = None
59class SplitPayWithSavedCardRequestSchema(MinimalPaymentRequestSchema):
60 card_id: str
61 split_user: str = Field(validation_alias='split_user_id')
62 split_amount: Decimal
63 description: str | None = None
66class SplitPayAndSaveCardRequestSchema(BasePaymentRequestSchema):
67 split_user: str = Field(validation_alias='split_user_id')
68 split_amount: Decimal
69 description: str | None = None
72##############################################################################
73# Apple Pay & Google Pay
74class CreateWidgetRequestSchema(PayloadBaseModel):
75 amount: Decimal
76 order_id: str
77 description: str
80class CreateTokenPaymentRequestSchema(PayloadBaseModel):
81 amount: Decimal
82 currency: str
83 order_id: str
84 description: str | None = None
87class ApplePaySessionRequestSchema(PayloadBaseModel):
88 origin: str
91class BaseTokenPayRequestSchema(PayloadBaseModel):
92 id: int | str = Field(validation_alias=AliasChoices('payment_id', 'id'))
93 token: Any
94 billing_contact: Any = Field(
95 default=None,
96 validation_alias=AliasChoices('billing_contact', 'billingContact'),
97 serialization_alias='billingContact',
98 )
101class ApplePayRequestSchema(BaseTokenPayRequestSchema):
102 pass
105class GooglePayRequestSchema(BaseTokenPayRequestSchema):
106 pass