From 58a9eab0d0844f2615e191711bf2a861e6d66295 Mon Sep 17 00:00:00 2001 From: Fenho Date: Wed, 9 Jul 2025 16:32:36 -0400 Subject: [PATCH 1/3] feat: map payment_method to payment_type for cash payments --- fintoc/resource_handlers.py | 6 ++++++ fintoc/resources/payment_intent.py | 4 ++++ tests/test_integration.py | 20 +++++++++++++++++--- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/fintoc/resource_handlers.py b/fintoc/resource_handlers.py index 1a892ed..f3569c8 100644 --- a/fintoc/resource_handlers.py +++ b/fintoc/resource_handlers.py @@ -46,6 +46,12 @@ def resource_create( client, path, klass, handlers, methods, params, idempotency_key=None ): """Create a new instance of a resource.""" + if hasattr(klass, "param_mappings"): + transformed_params = {} + for key, value in params.items(): + mapped_key = klass.param_mappings.get(key, key) + transformed_params[mapped_key] = value + params = transformed_params data = client.request( path, method="post", json=params, idempotency_key=idempotency_key ) diff --git a/fintoc/resources/payment_intent.py b/fintoc/resources/payment_intent.py index c5148d0..cd3290f 100644 --- a/fintoc/resources/payment_intent.py +++ b/fintoc/resources/payment_intent.py @@ -11,3 +11,7 @@ class PaymentIntent(ResourceMixin): "recipient_account": "transfer_account", "sender_account": "transfer_account", } + + param_mappings = { + "payment_method": "payment_type", + } diff --git a/tests/test_integration.py b/tests/test_integration.py index ffa96c6..b51b567 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -381,9 +381,23 @@ def test_payment_intent_create(self): assert payment_intent.url == "v1/payment_intents" assert payment_intent.json.amount == payment_intent_data["amount"] assert payment_intent.json.currency == payment_intent_data["currency"] - assert ( - payment_intent.json.payment_method == payment_intent_data["payment_method"] - ) + assert payment_intent.json.payment_type == payment_intent_data["payment_method"] + + def test_payment_intent_create_cash(self): + """Test creating a cash payment.""" + payment_intent_data = { + "amount": 1000, + "currency": "MXN", + "payment_method": "cash", + } + + payment_intent = self.fintoc.payment_intents.create(**payment_intent_data) + + assert payment_intent.method == "post" + assert payment_intent.url == "v1/payment_intents" + assert payment_intent.json.amount == payment_intent_data["amount"] + assert payment_intent.json.currency == payment_intent_data["currency"] + assert payment_intent.json.payment_type == payment_intent_data["payment_method"] def test_subscription_intents_list(self): """Test getting all subscription intents.""" From ec77418bbb63389a3d038bc3705e55bda1726bc8 Mon Sep 17 00:00:00 2001 From: Fenho Date: Wed, 9 Jul 2025 18:37:29 -0400 Subject: [PATCH 2/3] fixup! feat: map payment_method to payment_type for cash payments --- fintoc/resource_handlers.py | 6 ------ fintoc/resources/payment_intent.py | 4 ---- tests/test_integration.py | 8 ++++---- 3 files changed, 4 insertions(+), 14 deletions(-) diff --git a/fintoc/resource_handlers.py b/fintoc/resource_handlers.py index f3569c8..1a892ed 100644 --- a/fintoc/resource_handlers.py +++ b/fintoc/resource_handlers.py @@ -46,12 +46,6 @@ def resource_create( client, path, klass, handlers, methods, params, idempotency_key=None ): """Create a new instance of a resource.""" - if hasattr(klass, "param_mappings"): - transformed_params = {} - for key, value in params.items(): - mapped_key = klass.param_mappings.get(key, key) - transformed_params[mapped_key] = value - params = transformed_params data = client.request( path, method="post", json=params, idempotency_key=idempotency_key ) diff --git a/fintoc/resources/payment_intent.py b/fintoc/resources/payment_intent.py index cd3290f..c5148d0 100644 --- a/fintoc/resources/payment_intent.py +++ b/fintoc/resources/payment_intent.py @@ -11,7 +11,3 @@ class PaymentIntent(ResourceMixin): "recipient_account": "transfer_account", "sender_account": "transfer_account", } - - param_mappings = { - "payment_method": "payment_type", - } diff --git a/tests/test_integration.py b/tests/test_integration.py index b51b567..9ddb709 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -372,7 +372,7 @@ def test_payment_intent_create(self): payment_intent_data = { "amount": 1000, "currency": "CLP", - "payment_method": "bank_transfer", + "payment_type": "bank_transfer", } payment_intent = self.fintoc.payment_intents.create(**payment_intent_data) @@ -381,14 +381,14 @@ def test_payment_intent_create(self): assert payment_intent.url == "v1/payment_intents" assert payment_intent.json.amount == payment_intent_data["amount"] assert payment_intent.json.currency == payment_intent_data["currency"] - assert payment_intent.json.payment_type == payment_intent_data["payment_method"] + assert payment_intent.json.payment_type == payment_intent_data["payment_type"] def test_payment_intent_create_cash(self): """Test creating a cash payment.""" payment_intent_data = { "amount": 1000, "currency": "MXN", - "payment_method": "cash", + "payment_type": "cash", } payment_intent = self.fintoc.payment_intents.create(**payment_intent_data) @@ -397,7 +397,7 @@ def test_payment_intent_create_cash(self): assert payment_intent.url == "v1/payment_intents" assert payment_intent.json.amount == payment_intent_data["amount"] assert payment_intent.json.currency == payment_intent_data["currency"] - assert payment_intent.json.payment_type == payment_intent_data["payment_method"] + assert payment_intent.json.payment_type == payment_intent_data["payment_type"] def test_subscription_intents_list(self): """Test getting all subscription intents.""" From 9d029f547a8c9c19609a6d7dbf1699f1d9479982 Mon Sep 17 00:00:00 2001 From: Fenho Date: Wed, 9 Jul 2025 19:27:07 -0400 Subject: [PATCH 3/3] fixup! fixup! feat: map payment_method to payment_type for cash payments --- tests/test_integration.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/tests/test_integration.py b/tests/test_integration.py index 9ddb709..bfeeb4c 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -383,22 +383,6 @@ def test_payment_intent_create(self): assert payment_intent.json.currency == payment_intent_data["currency"] assert payment_intent.json.payment_type == payment_intent_data["payment_type"] - def test_payment_intent_create_cash(self): - """Test creating a cash payment.""" - payment_intent_data = { - "amount": 1000, - "currency": "MXN", - "payment_type": "cash", - } - - payment_intent = self.fintoc.payment_intents.create(**payment_intent_data) - - assert payment_intent.method == "post" - assert payment_intent.url == "v1/payment_intents" - assert payment_intent.json.amount == payment_intent_data["amount"] - assert payment_intent.json.currency == payment_intent_data["currency"] - assert payment_intent.json.payment_type == payment_intent_data["payment_type"] - def test_subscription_intents_list(self): """Test getting all subscription intents.""" subscription_intents = list(self.fintoc.subscription_intents.list())