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

1from decimal import Decimal 

2from typing import Any 

3 

4from integrify.epoint import env 

5from integrify.schemas import PayloadBaseModel 

6from pydantic import AliasChoices, Field 

7 

8 

9class MinimalPaymentRequestSchema(PayloadBaseModel): 

10 amount: Decimal 

11 currency: str 

12 order_id: str 

13 

14 

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 

19 

20 

21############################################################################## 

22class PaymentRequestSchema(BasePaymentRequestSchema): 

23 other_attr: dict | None = None 

24 

25 

26class GetTransactionStatusRequestSchema(PayloadBaseModel): 

27 transaction: str = Field(validation_alias='transaction_id') 

28 

29 

30class SaveCardRequestSchema(PayloadBaseModel): 

31 pass 

32 

33 

34class PayWithSavedCardRequestSchema(MinimalPaymentRequestSchema): 

35 card_id: str 

36 

37 

38class PayAndSaveCardRequestSchema(BasePaymentRequestSchema): 

39 description: str 

40 

41 

42class PayoutRequestSchema(MinimalPaymentRequestSchema): 

43 card_id: str 

44 description: str | None = None 

45 

46 

47class RefundRequestSchema(PayloadBaseModel): 

48 transaction: str = Field(validation_alias='transaction_id') 

49 currency: str 

50 amount: Decimal | None = None 

51 

52 

53class SplitPayRequestSchema(BasePaymentRequestSchema): 

54 split_user: str = Field(validation_alias='split_user_id') 

55 split_amount: Decimal 

56 other_attr: dict | None = None 

57 

58 

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 

64 

65 

66class SplitPayAndSaveCardRequestSchema(BasePaymentRequestSchema): 

67 split_user: str = Field(validation_alias='split_user_id') 

68 split_amount: Decimal 

69 description: str | None = None 

70 

71 

72############################################################################## 

73# Apple Pay & Google Pay 

74class CreateWidgetRequestSchema(PayloadBaseModel): 

75 amount: Decimal 

76 order_id: str 

77 description: str 

78 

79 

80class CreateTokenPaymentRequestSchema(PayloadBaseModel): 

81 amount: Decimal 

82 currency: str 

83 order_id: str 

84 description: str | None = None 

85 

86 

87class ApplePaySessionRequestSchema(PayloadBaseModel): 

88 origin: str 

89 

90 

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 ) 

99 

100 

101class ApplePayRequestSchema(BaseTokenPayRequestSchema): 

102 pass 

103 

104 

105class GooglePayRequestSchema(BaseTokenPayRequestSchema): 

106 pass