From 6217c7d29644f36e7db760bc29355dfbed35559a Mon Sep 17 00:00:00 2001 From: Iulian Masar Date: Fri, 23 May 2025 12:30:16 +0300 Subject: [PATCH] handle new fields for virtual accounts --- mangopay/fields.py | 11 +++++++---- mangopay/resources.py | 2 ++ mangopay/utils.py | 20 ++++++++++++-------- tests/test_virtual_account.py | 3 +++ 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/mangopay/fields.py b/mangopay/fields.py index 2df96fc..66b2438 100644 --- a/mangopay/fields.py +++ b/mangopay/fields.py @@ -968,7 +968,7 @@ def api_value(self, value): class LocalAccountDetailsField(Field): def python_value(self, value): if value is not None: - return LocalAccountDetails(address=value['Address'], account=value['Account']) + return LocalAccountDetails(address=value['Address'], account=value['Account'], bank_name=value['BankName']) return value def api_value(self, value): @@ -977,7 +977,8 @@ def api_value(self, value): if isinstance(value, LocalAccountDetails): value = { 'Address': value.address, - 'Account': value.account + 'Account': value.account, + 'BankName': value.bank_name } return value @@ -986,7 +987,8 @@ def api_value(self, value): class InternationalAccountDetailsField(Field): def python_value(self, value): if value is not None: - return InternationalAccountDetails(address=value['Address'], account=value['Account']) + return InternationalAccountDetails(address=value['Address'], account=value['Account'], + bank_name=value['BankName']) return value def api_value(self, value): @@ -995,7 +997,8 @@ def api_value(self, value): if isinstance(value, InternationalAccountDetails): value = { 'Address': value.address, - 'Account': value.account + 'Account': value.account, + 'BankName': value.bank_name } return value diff --git a/mangopay/resources.py b/mangopay/resources.py index d44b5be..d66aa9b 100644 --- a/mangopay/resources.py +++ b/mangopay/resources.py @@ -2615,6 +2615,8 @@ class VirtualAccount(BaseModel): local_account_details = LocalAccountDetailsField(api_name='LocalAccountDetails') international_account_details = ListField(api_name='InternationalAccountDetails') capabilities = VirtualAccountCapabilitiesField(api_name='Capabilities') + result_code = CharField(api_name='ResultCode') + result_message = CharField(api_name='ResultMessage') class Meta: verbose_name = 'virtual_account' diff --git a/mangopay/utils.py b/mangopay/utils.py index 46e3dc5..1022846 100644 --- a/mangopay/utils.py +++ b/mangopay/utils.py @@ -1041,34 +1041,38 @@ def to_api_json(self): class LocalAccountDetails(object): - def __init__(self, address=None, account=None): + def __init__(self, address=None, account=None, bank_name=None): self.address = address self.account = account + self.bank_name = bank_name def __str__(self): - return 'LocalAccountDetails: %s %s' % \ - (self.address, self.account) + return 'LocalAccountDetails: %s %s %s' % \ + (self.address, self.account, self.bank_name) def to_api_json(self): return { "Address": self.address, - "Account": self.account + "Account": self.account, + "BankName": self.bank_name } class InternationalAccountDetails(object): - def __init__(self, address=None, account=None): + def __init__(self, address=None, account=None, bank_name=None): self.address = address self.account = account + self.bank_name = bank_name def __str__(self): - return 'InternationalAccountDetails: %s %s' % \ - (self.address, self.account) + return 'InternationalAccountDetails: %s %s %s' % \ + (self.address, self.account, self.bank_name) def to_api_json(self): return { "Address": self.address, - "Account": self.account + "Account": self.account, + "BankName": self.bank_name } diff --git a/tests/test_virtual_account.py b/tests/test_virtual_account.py index 0f7e0ab..e25e2e5 100644 --- a/tests/test_virtual_account.py +++ b/tests/test_virtual_account.py @@ -12,6 +12,9 @@ def test_create_virtual_account(self): self.assertIsNotNone(virtual_account) self.assertEqual(virtual_account.status, 'ACTIVE') + self.assertEqual(virtual_account.result_message, 'Success') + self.assertEqual(virtual_account.result_code, '000000') + self.assertIsNotNone(virtual_account.local_account_details.bank_name) def test_get_virtual_account(self): virtual_account = BaseTestLive.create_new_virtual_account()