187 lines
5.2 KiB
Python
187 lines
5.2 KiB
Python
"""
|
|
Financial Interfaces - Absztrakt alaposztályok a fizetési és számlázási szolgáltatásokhoz.
|
|
|
|
Ez a modul definiálja a kötelező interfészeket, amelyeket minden konkrét implementációnak
|
|
követnie kell a fizetési átjárók és számlázási szolgáltatások esetében.
|
|
"""
|
|
|
|
from abc import ABC, abstractmethod
|
|
from typing import Optional, Dict, Any
|
|
from decimal import Decimal
|
|
|
|
|
|
class BasePaymentGateway(ABC):
|
|
"""
|
|
Absztrakt osztály fizetési átjárók számára.
|
|
|
|
Minden fizetési szolgáltató (Stripe, PayPal, stb.) implementálja ezt az interfészt,
|
|
hogy a FinancialOrchestrator egységesen kezelhesse őket.
|
|
"""
|
|
|
|
@abstractmethod
|
|
async def create_intent(
|
|
self,
|
|
amount: Decimal,
|
|
currency: str = "HUF",
|
|
metadata: Optional[Dict[str, Any]] = None,
|
|
**kwargs
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Fizetési szándék létrehozása a külső szolgáltatónál.
|
|
|
|
Args:
|
|
amount: A fizetendő összeg
|
|
currency: Pénznem (alapértelmezett: HUF)
|
|
metadata: Egyéni metaadatok
|
|
**kwargs: További paraméterek a konkrét implementáció számára
|
|
|
|
Returns:
|
|
Szótár a fizetési szándék adataival (pl. client_secret, id, status)
|
|
|
|
Raises:
|
|
PaymentGatewayError: Ha a fizetési szándék létrehozása sikertelen
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
async def verify_payment(
|
|
self,
|
|
payment_intent_id: str,
|
|
**kwargs
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Fizetés státuszának ellenőrzése a külső szolgáltatónál.
|
|
|
|
Args:
|
|
payment_intent_id: A fizetési szándék azonosítója
|
|
**kwargs: További paraméterek
|
|
|
|
Returns:
|
|
Szótár a fizetés részleteivel (pl. status, amount, customer)
|
|
|
|
Raises:
|
|
PaymentGatewayError: Ha az ellenőrzés sikertelen
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
async def refund_payment(
|
|
self,
|
|
payment_intent_id: str,
|
|
amount: Optional[Decimal] = None,
|
|
**kwargs
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Fizetés visszatérítése.
|
|
|
|
Args:
|
|
payment_intent_id: A fizetési szándék azonosítója
|
|
amount: Visszatérítendő összeg (ha None, akkor teljes összeg)
|
|
**kwargs: További paraméterek
|
|
|
|
Returns:
|
|
Szótár a visszatérítés részleteivel
|
|
|
|
Raises:
|
|
PaymentGatewayError: Ha a visszatérítés sikertelen
|
|
"""
|
|
pass
|
|
|
|
|
|
class BaseInvoicingService(ABC):
|
|
"""
|
|
Absztrakt osztály számlázási szolgáltatások számára.
|
|
|
|
Minden számlázási rendszer (számlázz.hu, NAV Online Számla, stb.) implementálja
|
|
ezt az interfészt a számlák egységes kezeléséhez.
|
|
"""
|
|
|
|
@abstractmethod
|
|
async def issue_invoice(
|
|
self,
|
|
issuer_id: int,
|
|
customer_data: Dict[str, Any],
|
|
items: list[Dict[str, Any]],
|
|
**kwargs
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Szála kiállítása.
|
|
|
|
Args:
|
|
issuer_id: A számlakiállító (Issuer) azonosítója
|
|
customer_data: Ügyfél adatok (név, cím, adószám, stb.)
|
|
items: Számla tételek listája
|
|
**kwargs: További paraméterek
|
|
|
|
Returns:
|
|
Szótár a számla részleteivel (pl. invoice_number, issue_date, total_amount)
|
|
|
|
Raises:
|
|
InvoicingError: Ha a számla kiállítása sikertelen
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
async def get_invoice_status(
|
|
self,
|
|
invoice_id: str,
|
|
**kwargs
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Számla státuszának lekérdezése.
|
|
|
|
Args:
|
|
invoice_id: A számla azonosítója
|
|
**kwargs: További paraméterek
|
|
|
|
Returns:
|
|
Szótár a számla státuszával és további adatokkal
|
|
|
|
Raises:
|
|
InvoicingError: Ha a státusz lekérdezése sikertelen
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
async def cancel_invoice(
|
|
self,
|
|
invoice_id: str,
|
|
reason: Optional[str] = None,
|
|
**kwargs
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Számla érvénytelenítése.
|
|
|
|
Args:
|
|
invoice_id: A számla azonosítója
|
|
reason: Érvénytelenítés oka
|
|
**kwargs: További paraméterek
|
|
|
|
Returns:
|
|
Szótár az érvénytelenítés eredményével
|
|
|
|
Raises:
|
|
InvoicingError: Ha az érvénytelenítés sikertelen
|
|
"""
|
|
pass
|
|
|
|
|
|
# Egyéni kivételek a finanszírozási szolgáltatásokhoz
|
|
class FinancialServiceError(Exception):
|
|
"""Alap kivétel az összes finanszírozási szolgáltatási hibához."""
|
|
pass
|
|
|
|
|
|
class PaymentGatewayError(FinancialServiceError):
|
|
"""Kivétel fizetési átjáró hibákhoz."""
|
|
pass
|
|
|
|
|
|
class InvoicingError(FinancialServiceError):
|
|
"""Kivétel számlázási hibákhoz."""
|
|
pass
|
|
|
|
|
|
class InsufficientFundsError(FinancialServiceError):
|
|
"""Kivétel elégtelen egyenleg esetén."""
|
|
pass |