Coverage for src/integrify/azericard/schemas/common.py: 100%

18 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-12-29 00:57 +0000

1import secrets 

2from decimal import Decimal 

3from typing import Union 

4 

5from pydantic import BaseModel, Field 

6 

7from integrify.azericard import env 

8from integrify.azericard.schemas.enums import ( 

9 AuthorizationMiscType, 

10 AuthorizationResponseType, 

11 AuthorizationType, 

12) 

13from integrify.azericard.utils import TimeStampOut 

14 

15 

16class AzeriCardMinimalDataSchema(BaseModel): 

17 order: str = Field(min_length=6, max_length=32) 

18 """Satıcı sifariş ID-si, rəqəmsal. Son 6 rəqəm sistem izi audit nömrəsi kimi istifadə olunur, 

19 terminal id üçün bir gün ərzində unikal olmalıdır""" 

20 

21 terminal: str = Field(default=env.AZERICARD_MERCHANT_ID) # type: ignore[assignment] 

22 """Bank tərəfindən təyin edilmiş Merchant Terminal ID""" 

23 

24 trtype: Union[AuthorizationType, AuthorizationResponseType, AuthorizationMiscType] = Field( 

25 min_length=1, max_length=2 

26 ) 

27 """Tranzaksiya növü. Mümkün dəyərlər üçün enum faylına bax.""" 

28 

29 timestamp: TimeStampOut 

30 """GMT-də e-ticarət şlüzünün vaxt damğası: YYYYMMDDHHMMSS""" 

31 

32 nonce: str = Field( 

33 default_factory=lambda: secrets.token_hex(16), 

34 min_length=8, 

35 max_length=32, 

36 ) 

37 """E-Commerce Gateway qeyri-dəyərlidir. Hexadecimal formatda 8-32 

38 təsadüfi baytla doldurulacaq. MAC istifadə edildikdə mövcud olacaq.""" 

39 

40 

41class AzeriCardMinimalWithAmountDataSchema(AzeriCardMinimalDataSchema): 

42 amount: Decimal 

43 """Sifarişin ümumi məbləği""" 

44 

45 currency: str = Field(min_length=1, max_length=3) 

46 """Sifariş valyutası: 3 simvollu valyuta kodu"""