Coverage for src/integrify/epoint/schemas/response.py: 100%
43 statements
« prev ^ index » next coverage.py v7.10.3, created at 2026-02-02 01:50 +0000
« prev ^ index » next coverage.py v7.10.3, created at 2026-02-02 01:50 +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 3 rəqəmli cavab kodu."""
53 @field_validator('code', mode='before')
54 @classmethod
55 def code_to_msg(cls, v: Optional[str] = None) -> Optional[str]:
56 """3 rəqəmli koddan, xəta/uğur mesajına çevrilir."""
57 return Code[v] if v else None
60#################################################################
61class RedirectUrlResponseSchema(MinimalResponseSchema):
62 # if success
63 transaction: Optional[str] = None
64 """EPoint xidmətinin əməliyyat IDsi"""
66 redirect_url: Optional[str] = None
67 """İstifadəçinin kart məlumatlarını daxil etmək üçün yönləndirilməsi lazım olan URL"""
70class RedirectUrlWithCardIdResponseSchema(RedirectUrlResponseSchema):
71 card_id: Optional[str] = None
72 """Ödənişləri yerinə yetirmək üçün istifadə edilməsi
73 lazım olan unikal kart identifikatoru"""
76class PaymentSchema(BaseWithCodeSchema):
77 order_id: str
78 """Tətbiqinizdə unikal əməliyyat ID"""
80 other_attr: Optional[str] = None
81 """Əlavə göndərdiyiniz seçimlər"""
84class TransactionStatusResponseSchema(BaseWithCodeSchema):
85 status: TransactionStatusExtended # type: ignore[assignment]
86 """Tranzaksiyanın detallı statusu"""
88 order_id: Optional[str] = None
89 """Tətbiqinizdə unikal əməliyyat ID"""
91 other_attr: Optional[str] = None
92 """Əlavə göndərdiyiniz seçimlər"""
95class SplitPayWithSavedCardResponseSchema(BaseResponseSchema):
96 split_amount: Optional[Decimal] = None
97 """İkinci istifadəçi üçün ödəniş məbləği."""