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
« prev ^ index » next coverage.py v7.6.10, created at 2025-02-10 00:57 +0000
1from decimal import Decimal
2from typing import Optional
4from pydantic import BaseModel, field_validator
6from integrify.epoint.schemas.enums import (
7 Code,
8 TransactionStatus,
9 TransactionStatusExtended,
10)
13class MinimalResponseSchema(BaseModel):
14 status: TransactionStatus
15 """Success və ya failed əməliyyatının nəticəsi"""
17 message: Optional[str] = None
18 """Ödənişin icra statusu haqqında mesaj"""
21class BaseResponseSchema(MinimalResponseSchema):
22 # if success
23 transaction: Optional[str] = None
24 """EPoint xidmətinin əməliyyat IDsi"""
26 bank_transaction: Optional[str] = None
27 """Bank ödəniş əməliyyatı IDsi"""
29 bank_response: Optional[str] = None
30 """Ödəniş icrasının nəticəsi ilə bankın cavabı"""
32 operation_code: Optional[str] = None
33 """001-kart qeydiyyatı\n100- istifadəçi ödənişi"""
35 rrn: Optional[str] = None
36 """Retrieval Reference Number - unikal əməliyyat identifikatoru.
37 Yalnız uğurlu bir əməliyyat üçün mövcuddur"""
39 card_mask: Optional[str] = None
40 """Ödəniş səhifəsində göstərilən istifadəçi adı"""
42 card_name: Optional[str] = None
43 """123456******1234 formatında əks edilən kart maskası"""
45 amount: Optional[Decimal] = None
46 """Ödəniş məbləği"""
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."""
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
59#################################################################
60class RedirectUrlResponseSchema(MinimalResponseSchema):
61 # if success
62 transaction: Optional[str] = None
63 """EPoint xidmətinin əməliyyat IDsi"""
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"""
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"""
75class PaymentSchema(BaseWithCodeSchema):
76 order_id: str
77 """Tətbiqinizdə unikal əməliyyat ID"""
79 other_attr: Optional[str] = None
80 """Əlavə göndərdiyiniz seçimlər"""
83class TransactionStatusResponseSchema(BaseWithCodeSchema):
84 status: TransactionStatusExtended # type: ignore[assignment]
85 """Tranzaksiyanın detallı statusu"""
87 order_id: Optional[str] = None
88 """Tətbiqinizdə unikal əməliyyat ID"""
90 other_attr: Optional[str] = None
91 """Əlavə göndərdiyiniz seçimlər"""
94class SplitPayWithSavedCardResponseSchema(BaseResponseSchema):
95 split_amount: Optional[Decimal] = None
96 """İkinci istifadəçi üçün ödəniş məbləği."""