Files
vontor-cz/backend/thirdparty/gopay/client.py
2025-11-05 02:05:35 +01:00

75 lines
2.0 KiB
Python

from __future__ import annotations
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
try:
# Expecting official SDK providing `payments` with required methods
from gopay import payments as _payments # type: ignore
except Exception: # pragma: no cover
_payments = None
def _get_client():
if _payments is None:
raise ImproperlyConfigured(
"GoPay SDK not installed or not importable. Install and configure the GoPay SDK."
)
# If your SDK requires explicit initialization with credentials, do it here.
# Example (pseudo):
# return PaymentsClient(
# goid=settings.GOPAY_GOID,
# client_id=settings.GOPAY_CLIENT_ID,
# client_secret=settings.GOPAY_CLIENT_SECRET,
# gateway_url=settings.GOPAY_GATEWAY_URL,
# )
return _payments
def create_payment(payload: dict):
return _get_client().create_payment(payload)
def get_status(payment_id: str | int):
return _get_client().get_status(payment_id)
def refund_payment(payment_id: str | int, amount: int):
return _get_client().refund_payment(payment_id, amount)
def create_recurrence(payment_id: str | int, payload: dict):
return _get_client().create_recurrence(payment_id, payload)
def void_recurrence(payment_id: str | int):
return _get_client().void_recurrence(payment_id)
def capture_authorization(payment_id: str | int):
return _get_client().capture_authorization(payment_id)
def capture_authorization_partial(payment_id: str | int, payload: dict):
return _get_client().capture_authorization_partial(payment_id, payload)
def get_card_details(card_id: str | int):
return _get_client().get_card_details(card_id)
def delete_card(card_id: str | int):
return _get_client().delete_card(card_id)
def get_payment_instruments(goid: str | int, currency: str):
return _get_client().get_payment_instruments(goid, currency)
def get_payment_instruments_all(goid: str | int):
return _get_client().get_payment_instruments_all(goid)
def get_account_statement(statement_request: dict):
return _get_client().get_account_statement(statement_request)