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
« 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
5from pydantic import BaseModel, Field
7from integrify.azericard import env
8from integrify.azericard.schemas.enums import (
9 AuthorizationMiscType,
10 AuthorizationResponseType,
11 AuthorizationType,
12)
13from integrify.azericard.utils import TimeStampOut
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"""
21 terminal: str = Field(default=env.AZERICARD_MERCHANT_ID) # type: ignore[assignment]
22 """Bank tərəfindən təyin edilmiş Merchant Terminal ID"""
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."""
29 timestamp: TimeStampOut
30 """GMT-də e-ticarət şlüzünün vaxt damğası: YYYYMMDDHHMMSS"""
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."""
41class AzeriCardMinimalWithAmountDataSchema(AzeriCardMinimalDataSchema):
42 amount: Decimal
43 """Sifarişin ümumi məbləği"""
45 currency: str = Field(min_length=1, max_length=3)
46 """Sifariş valyutası: 3 simvollu valyuta kodu"""