From 1ebf1d74f79cfb13365714a0fbdc3ed623baa7dd Mon Sep 17 00:00:00 2001 From: Nifemi Sola-Ojo Date: Thu, 25 Nov 2021 01:13:19 +0100 Subject: [PATCH 1/3] include currency in passed params --- pypaystack/transactions.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pypaystack/transactions.py b/pypaystack/transactions.py index 67e4e7f..72cdf90 100644 --- a/pypaystack/transactions.py +++ b/pypaystack/transactions.py @@ -38,7 +38,7 @@ def totals(self): return self._handle_request("GET", url) def initialize( - self, email, amount, plan=None, reference=None, channel=None, metadata=None + self, email, amount, plan=None, reference=None, channel=None, metadata=None, currency=None ): """ Initialize a transaction and returns the response @@ -50,6 +50,7 @@ def initialize( Reference -- optional channel -- channel type to use metadata -- a list if json data objects/dicts + currency -- currency to charge eg USD """ amount = utils.validate_amount(amount) @@ -70,10 +71,12 @@ def initialize( payload.update({"reference": reference}) if metadata: payload = payload.update({"metadata": {"custom_fields": metadata}}) + if currency: + payload.update({"currency": currency}) return self._handle_request("POST", url, payload) - def charge(self, email, auth_code, amount, reference=None, metadata=None): + def charge(self, email, auth_code, amount, reference=None, metadata=None, currency=None): """ Charges a customer and returns the response @@ -103,6 +106,8 @@ def charge(self, email, auth_code, amount, reference=None, metadata=None): payload.update({"reference": reference}) if metadata: payload.update({"metadata": {"custom_fields": metadata}}) + if currency: + payload.update({"currency": currency}) return self._handle_request("POST", url, payload) From 2aa465662c9fd3769efdae77eb682eb5b4a0b628 Mon Sep 17 00:00:00 2001 From: Nifemi Sola-Ojo Date: Wed, 1 Dec 2021 10:12:50 +0100 Subject: [PATCH 2/3] add currency to sent payload --- .gitignore | 1 + pypaystack/transactions.py | 1 - tests/test_00_transaction.py | 4 +++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 14fdd76..93955f1 100644 --- a/.gitignore +++ b/.gitignore @@ -66,3 +66,4 @@ target/ # Vscode config .vscode +.env diff --git a/pypaystack/transactions.py b/pypaystack/transactions.py index 72cdf90..f55784d 100644 --- a/pypaystack/transactions.py +++ b/pypaystack/transactions.py @@ -108,7 +108,6 @@ def charge(self, email, auth_code, amount, reference=None, metadata=None, curren payload.update({"metadata": {"custom_fields": metadata}}) if currency: payload.update({"currency": currency}) - return self._handle_request("POST", url, payload) def verify(self, reference): diff --git a/tests/test_00_transaction.py b/tests/test_00_transaction.py index 83e19c6..874a18c 100644 --- a/tests/test_00_transaction.py +++ b/tests/test_00_transaction.py @@ -13,12 +13,14 @@ def test_charge_and_verify(self): """ transaction_details = { "amount": 1000*100, - "email": "test_customer@mail.com" + "email": "test_customer@mail.com", + "currency": "USD" } def initialize_transaction(): (status_code, status, response_msg, initialized_transaction_data) = self.transaction.initialize(**transaction_details) + self.assertEqual(status_code, 200) self.assertEqual(status, True) self.assertEqual(response_msg, 'Authorization URL created') From ae51b379e81a9787c98ea20e46d5c377101baeff Mon Sep 17 00:00:00 2001 From: Nifemi Sola-Ojo Date: Tue, 18 Jan 2022 01:02:04 +0100 Subject: [PATCH 3/3] Added tests for dollar currency case --- .gitignore | 1 + tests/test_00_transaction.py | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/.gitignore b/.gitignore index 93955f1..94cd420 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,4 @@ target/ # Vscode config .vscode .env +venv/ diff --git a/tests/test_00_transaction.py b/tests/test_00_transaction.py index 874a18c..0b49a14 100644 --- a/tests/test_00_transaction.py +++ b/tests/test_00_transaction.py @@ -14,6 +14,11 @@ def test_charge_and_verify(self): transaction_details = { "amount": 1000*100, "email": "test_customer@mail.com", + } + + dollar_transaction_details = { + "amount": 200 * 100, + "email": "test.customer@mail.com", "currency": "USD" } @@ -26,6 +31,15 @@ def initialize_transaction(): self.assertEqual(response_msg, 'Authorization URL created') return initialized_transaction_data + def initialize_dollar_transaction(): + (status_code, status, response_msg, + initialized_dollar_transaction_data) = self.transaction.initialize(**dollar_transaction_details) + + self.assertEqual(status_code, 200) + self.assertEqual(status, True) + self.assertEqual(response_msg, 'Authorization URL created') + return initialized_dollar_transaction_data + def verify_transaction(): (status_code, status, response_msg, response_data) = self.transaction.verify( reference=initialized_transaction_data['reference']) @@ -35,5 +49,18 @@ def verify_transaction(): self.assertEqual(response_data.get('customer') ['email'], transaction_details['email']) + def verify_dollar_transaction(): + (status_code, status, response_msg, response_data) = self.transaction.verify( + reference=initialized_dollar_transaction_data['reference']) + self.assertEqual(status_code, 200) + self.assertEqual(status, True) + self.assertEqual(response_msg, 'Verification successful') + self.assertEqual(response_data.get('customer') + ['email'], dollar_transaction_details['email']) + + initialized_transaction_data = initialize_transaction() verify_transaction() + + initialized_dollar_transaction_data = initialize_dollar_transaction() + verify_dollar_transaction()