Интеграция платежного шлюза с Django

Я интегрирую API платежных шлюзов в свое приложение (Django). Я написал класс PaymentGateway, который предоставляет все методы для всех утилит, связанных с платежами. Класс __init__ инициализирует клиента платежного шлюза как self.client, чтобы он был доступен во всех методах. Но мне нужна помощь в принятии решения о том, как его использовать.

Нормально ли, если я инстанцирую и использую объект платежного шлюза во всей программе, когда он мне нужен? ИЛИ Должен ли я поддерживать один экземпляр во всем приложении?

Нужна помощь в понимании плюсов и минусов или любое другое предложение, чтобы я мог принять это решение.

Мой текущий код сейчас выглядит примерно так:

class PaymentGateway:
    def __init__(self):
        self.client = PG(api_key="api_key")

    def create_intent(self, user):
        return self.client.intents.create(customer_id=user.email)

    def get_user_id(email):
        return self.client.users.retrieve(customer_id=email)

class MyView(GenericAPIView):
    def get(self, request):
        pg_instance = PaymentGateway()
        intent = pg_instance.create(request.user)
        return Response({"user_id": get_user_id(request.user), "intent": intent})


# Somewhere in utils.py
def get_user_id(user):
    pg = PaymentGateway()
    return pg.get_user_id(user.email)

Вернуться на верх