From edaf5a5433f4cb74ff69b5e61ef6d9c798d0e0ab Mon Sep 17 00:00:00 2001 From: Gonzalo Caballero Date: Thu, 19 Feb 2026 10:10:57 -0300 Subject: [PATCH 1/2] feat(payment-intent-v2): add resource --- fintoc/resources/v2/payment_intent.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 fintoc/resources/v2/payment_intent.py diff --git a/fintoc/resources/v2/payment_intent.py b/fintoc/resources/v2/payment_intent.py new file mode 100644 index 0000000..665d124 --- /dev/null +++ b/fintoc/resources/v2/payment_intent.py @@ -0,0 +1,8 @@ +# pylint: disable=duplicate-code +"""Module to hold the PaymentIntent resource.""" + +from fintoc.mixins import ResourceMixin + + +class PaymentIntent(ResourceMixin): + """Represents a Fintoc Payment Intent.""" From 6c3091727b43a4189c7530c46675e8daa1487a4d Mon Sep 17 00:00:00 2001 From: Gonzalo Caballero Date: Thu, 19 Feb 2026 10:18:32 -0300 Subject: [PATCH 2/2] feat(payment-intents-v2): add manager --- fintoc/core.py | 10 +++--- fintoc/managers/v2/__init__.py | 1 + fintoc/managers/v2/payment_intents_manager.py | 10 ++++++ tests/test_integration.py | 36 +++++++++++++++++++ 4 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 fintoc/managers/v2/payment_intents_manager.py diff --git a/fintoc/core.py b/fintoc/core.py index 589eb44..f152122 100644 --- a/fintoc/core.py +++ b/fintoc/core.py @@ -23,12 +23,9 @@ from fintoc.managers.v2 import AccountsManager as AccountsManagerV2 from fintoc.managers.v2 import AccountVerificationsManager from fintoc.managers.v2 import CheckoutSessionsManager as CheckoutSessionsManagerV2 -from fintoc.managers.v2 import ( - CustomersManager, - EntitiesManager, - SimulateManager, - TransfersManager, -) +from fintoc.managers.v2 import CustomersManager, EntitiesManager +from fintoc.managers.v2 import PaymentIntentsManager as PaymentIntentsManagerV2 +from fintoc.managers.v2 import SimulateManager, TransfersManager from fintoc.version import __version__ @@ -86,3 +83,4 @@ def __init__(self, client): self.checkout_sessions = CheckoutSessionsManagerV2( "/v2/checkout_sessions", client ) + self.payment_intents = PaymentIntentsManagerV2("/v2/payment_intents", client) diff --git a/fintoc/managers/v2/__init__.py b/fintoc/managers/v2/__init__.py index c6eef39..558a21d 100644 --- a/fintoc/managers/v2/__init__.py +++ b/fintoc/managers/v2/__init__.py @@ -7,5 +7,6 @@ from .customers_manager import CustomersManager from .entities_manager import EntitiesManager from .movements_manager import MovementsManager +from .payment_intents_manager import PaymentIntentsManager from .simulate_manager import SimulateManager from .transfers_manager import TransfersManager diff --git a/fintoc/managers/v2/payment_intents_manager.py b/fintoc/managers/v2/payment_intents_manager.py new file mode 100644 index 0000000..2d7195d --- /dev/null +++ b/fintoc/managers/v2/payment_intents_manager.py @@ -0,0 +1,10 @@ +"""Module to hold the payment_intents manager.""" + +from fintoc.mixins import ManagerMixin + + +class PaymentIntentsManager(ManagerMixin): + """Represents a payment_intents manager.""" + + resource = "payment_intent" + methods = ["list", "get", "create"] diff --git a/tests/test_integration.py b/tests/test_integration.py index d23754a..ffda8a8 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -953,6 +953,42 @@ def test_v2_checkout_session_expire(self): assert result.method == "post" assert result.url == f"v2/checkout_sessions/{checkout_session_id}/expire" + def test_v2_payment_intent_list(self): + """Test getting all payment intents using v2 API.""" + payment_intents = list(self.fintoc.v2.payment_intents.list()) + + assert len(payment_intents) > 0 + for payment_intent in payment_intents: + assert payment_intent.method == "get" + assert payment_intent.url == "v2/payment_intents" + + def test_v2_payment_intent_get(self): + """Test getting a specific payment intent using v2 API.""" + payment_intent_id = "test_payment_intent_id" + + payment_intent = self.fintoc.v2.payment_intents.get(payment_intent_id) + + assert payment_intent.method == "get" + assert payment_intent.url == f"v2/payment_intents/{payment_intent_id}" + + def test_v2_payment_intent_create(self): + """Test creating a payment intent using v2 API.""" + payment_intent_data = { + "amount": 5000, + "currency": "CLP", + "success_url": "https://example.com/success", + "cancel_url": "https://example.com/cancel", + } + + payment_intent = self.fintoc.v2.payment_intents.create(**payment_intent_data) + + assert payment_intent.method == "post" + assert payment_intent.url == "v2/payment_intents" + assert payment_intent.json.amount == payment_intent_data["amount"] + assert payment_intent.json.currency == payment_intent_data["currency"] + assert payment_intent.json.success_url == payment_intent_data["success_url"] + assert payment_intent.json.cancel_url == payment_intent_data["cancel_url"] + if __name__ == "__main__": pytest.main()