Coverage for src/integrify/epoint/schemas/response.py: 100%

43 statements  

« prev     ^ index     » next       coverage.py v7.6.10, created at 2025-02-10 00:57 +0000

1from decimal import Decimal 

2from typing import Optional 

3 

4from pydantic import BaseModel, field_validator 

5 

6from integrify.epoint.schemas.enums import ( 

7 Code, 

8 TransactionStatus, 

9 TransactionStatusExtended, 

10) 

11 

12 

13class MinimalResponseSchema(BaseModel): 

14 status: TransactionStatus 

15 """Success və ya failed əməliyyatının nəticəsi""" 

16 

17 message: Optional[str] = None 

18 """Ödənişin icra statusu haqqında mesaj""" 

19 

20 

21class BaseResponseSchema(MinimalResponseSchema): 

22 # if success 

23 transaction: Optional[str] = None 

24 """EPoint xidmətinin əməliyyat IDsi""" 

25 

26 bank_transaction: Optional[str] = None 

27 """Bank ödəniş əməliyyatı IDsi""" 

28 

29 bank_response: Optional[str] = None 

30 """Ödəniş icrasının nəticəsi ilə bankın cavabı""" 

31 

32 operation_code: Optional[str] = None 

33 """001-kart qeydiyyatı\n100- istifadəçi ödənişi""" 

34 

35 rrn: Optional[str] = None 

36 """Retrieval Reference Number - unikal əməliyyat identifikatoru. 

37 Yalnız uğurlu bir əməliyyat üçün mövcuddur""" 

38 

39 card_mask: Optional[str] = None 

40 """Ödəniş səhifəsində göstərilən istifadəçi adı""" 

41 

42 card_name: Optional[str] = None 

43 """123456******1234 formatında əks edilən kart maskası""" 

44 

45 amount: Optional[Decimal] = None 

46 """Ödəniş məbləği""" 

47 

48 

49class BaseWithCodeSchema(BaseResponseSchema): 

50 code: Optional[str] = None 

51 """Bankın cavab kodu. 3 rəqəmli koddan, xəta/uğur mesajına çevrilir.""" 

52 

53 @field_validator('code', mode='before') 

54 @classmethod 

55 def code_to_msg(cls, v: Optional[str] = None) -> Optional[str]: # pylint: disable=C0116 

56 return Code[v] if v else None 

57 

58 

59################################################################# 

60class RedirectUrlResponseSchema(MinimalResponseSchema): 

61 # if success 

62 transaction: Optional[str] = None 

63 """EPoint xidmətinin əməliyyat IDsi""" 

64 

65 redirect_url: Optional[str] = None 

66 """İstifadəçinin kart məlumatlarını daxil etmək üçün yönləndirilməsi lazım olan URL""" 

67 

68 

69class RedirectUrlWithCardIdResponseSchema(RedirectUrlResponseSchema): 

70 card_id: Optional[str] = None 

71 """Ödənişləri yerinə yetirmək üçün istifadə edilməsi 

72 lazım olan unikal kart identifikatoru""" 

73 

74 

75class PaymentSchema(BaseWithCodeSchema): 

76 order_id: str 

77 """Tətbiqinizdə unikal əməliyyat ID""" 

78 

79 other_attr: Optional[str] = None 

80 """Əlavə göndərdiyiniz seçimlər""" 

81 

82 

83class TransactionStatusResponseSchema(BaseWithCodeSchema): 

84 status: TransactionStatusExtended # type: ignore[assignment] 

85 """Tranzaksiyanın detallı statusu""" 

86 

87 order_id: Optional[str] = None 

88 """Tətbiqinizdə unikal əməliyyat ID""" 

89 

90 other_attr: Optional[str] = None 

91 """Əlavə göndərdiyiniz seçimlər""" 

92 

93 

94class SplitPayWithSavedCardResponseSchema(BaseResponseSchema): 

95 split_amount: Optional[Decimal] = None 

96 """İkinci istifadəçi üçün ödəniş məbləği."""