Skip to content

Commit d64ff5f

Browse files
Added support for API v2.01
1 parent 4bf56e8 commit d64ff5f

File tree

10 files changed

+86
-8
lines changed

10 files changed

+86
-8
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ MangopaySDK is a Python client library to work with
55
[Mangopay REST API](http://docs.mangopay.com/api-references/).
66

77

8+
Compatibility Note
9+
-------------------------------------------------
10+
Since v1.8 of this SDK, you must be using at least v2.01 of the API ([more information about the changes required](https://docs.mangopay.com/api-v2-01-overview/))
11+
12+
813
Installation and package dependencies
914
-------------------------------------------------
1015
SDK has been written in Python 2.7+ and requires:
@@ -51,7 +56,7 @@ Report bugs or suggest features using [issue tracker at GitHub](https://github.c
5156
Client creation example (you need to call it only once)
5257
-------------------------------------------------
5358

54-
You can create you Mangopay account on https://docs.mangopay.com/api-references/sandbox-credentials/
59+
You can create your Mangopay account on https://docs.mangopay.com/api-references/sandbox-credentials/
5560

5661
or with this code :
5762

mangopay2-python-sdk.pyproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
<Compile Include="mangopaysdk\tools\storages\__init__.py">
6767
<SubType>Code</SubType>
6868
</Compile>
69+
<Compile Include="mangopaysdk\types\address.py" />
6970
<Compile Include="mangopaysdk\types\bankaccountdetails.py" />
7071
<Compile Include="mangopaysdk\types\bankaccountdetailsca.py" />
7172
<Compile Include="mangopaysdk\types\bankaccountdetailsgb.py" />

mangopaysdk/entities/bankaccount.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from mangopaysdk.entities.entitybase import EntityBase
2+
from mangopaysdk.types.address import Address
23

34

45
class BankAccount(EntityBase):
@@ -17,6 +18,12 @@ def __init__(self, id = None):
1718
#self.BIC = None
1819
return super(BankAccount, self).__init__(id)
1920

21+
def GetSubObjects(self):
22+
"""Get array with mapping which property is object and what type of object.
23+
return dictionary
24+
"""
25+
return {'OwnerAddress' : 'Address'}
26+
2027
def GetReadOnlyProperties(self):
2128
properties = super(BankAccount, self).GetReadOnlyProperties()
2229
properties.append('UserId')

mangopaysdk/entities/userlegal.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from mangopaysdk.entities.user import User
33
from mangopaysdk.tools.enums import PersonType
44
from mangopaysdk.tools.enums import KYCLevel
5+
from mangopaysdk.types.address import Address
56

67

78
class UserLegal (User):
@@ -31,6 +32,15 @@ def __init__(self, id = None):
3132
self._shareholderDeclaration = None
3233
self._legalRepresentativeProofOfIdentity = None
3334

35+
def GetSubObjects(self):
36+
"""Get array with mapping which property is object and what type of object.
37+
return dictionary
38+
"""
39+
return {
40+
'HeadquartersAddress' : 'Address',
41+
'LegalRepresentativeAddress' : 'Address'
42+
}
43+
3444
def GetReadOnlyProperties(self):
3545
properties = super(UserLegal, self).GetReadOnlyProperties()
3646
properties.append('Statute' )

mangopaysdk/entities/usernatural.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from mangopaysdk.entities.user import User
33
from mangopaysdk.tools.enums import PersonType
44
from mangopaysdk.tools.enums import KYCLevel
5+
from mangopaysdk.types.address import Address
56

67

78
class UserNatural(User):
@@ -26,6 +27,12 @@ def __init__(self, id = None):
2627
self.ProofOfIdentity = None
2728
self.ProofOfAddress = None
2829

30+
def GetSubObjects(self):
31+
"""Get array with mapping which property is object and what type of object.
32+
return dictionary
33+
"""
34+
return {'Address' : 'Address'}
35+
2936
def GetReadOnlyProperties(self):
3037
properties = super(UserNatural, self).GetReadOnlyProperties()
3138
properties.append('ProofOfIdentity' )

mangopaysdk/tools/apibase.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
from mangopaysdk.types.bankaccountdetailsca import BankAccountDetailsCA
3939
from mangopaysdk.types.bankaccountdetailsother import BankAccountDetailsOTHER
4040
from mangopaysdk.types.refundreason import RefundReason
41+
from mangopaysdk.types.address import Address
4142
from mangopaysdk.entities.temporarypaymentcard import TemporaryPaymentCard
4243
from mangopaysdk.entities.temporaryimmediatepayin import TemporaryImmediatePayIn
4344

mangopaysdk/tools/urltool.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ def __init__ (self, config):
1515
def GetRestUrl(self, urlKey, addClientId = True, pagination = None, additionalUrlParams = None):
1616

1717
if not addClientId:
18-
url = '/v2' + urlKey
18+
url = '/v2.01' + urlKey
1919
else:
20-
url = '/v2/' + self._config.ClientID + urlKey
20+
url = '/v2.01/' + self._config.ClientID + urlKey
2121

2222
if pagination != None:
2323
url += '?page=' + str(pagination.Page) + '&per_page=' + str(pagination.ItemsPerPage)

mangopaysdk/types/address.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from mangopaysdk.types.dto import Dto
2+
3+
4+
class Address(Dto):
5+
"""Class represents an address."""
6+
7+
def __init__(self):
8+
self.AddressLine1 = None
9+
self.AddressLine2 = None
10+
self.City = None
11+
self.Region = None
12+
self.PostalCode = None
13+
self.Country = None

tests/testapiusers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from mangopaysdk.types.bankaccountdetailsus import BankAccountDetailsUS
1414
from mangopaysdk.types.bankaccountdetailsca import BankAccountDetailsCA
1515
from mangopaysdk.types.bankaccountdetailsother import BankAccountDetailsOTHER
16+
from mangopaysdk.types.address import Address
1617
from mangopaysdk.tools.sorting import Sorting
1718

1819

@@ -37,6 +38,13 @@ def test_Users_CreateLegal_FailsIfRequiredPropsNotProvided(self):
3738

3839
def test_Users_CreateLegal_PassesIfRequiredPropsProvided(self):
3940
user = UserLegal()
41+
user.HeadquartersAddress = Address()
42+
user.HeadquartersAddress.AddressLine1 = "AddressLine1"
43+
user.HeadquartersAddress.AddressLine2 = "AddressLine2"
44+
user.HeadquartersAddress.City = "City"
45+
user.HeadquartersAddress.Country = "FR"
46+
user.HeadquartersAddress.PostalCode = "11222"
47+
user.HeadquartersAddress.Region = "Region"
4048
user.Name = "SomeOtherSampleOrg"
4149
user.LegalPersonType = "BUSINESS"
4250
user.Email = "john.doe@sample.org"

tests/testbase.py

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from mangopaysdk.types.payinpaymentdetailspreauthorized import PayInPaymentDetailsPreAuthorized
2525
from mangopaysdk.types.payinpaymentdetailsdirectdebit import PayInPaymentDetailsDirectDebit
2626
from mangopaysdk.types.money import Money
27+
from mangopaysdk.types.address import Address
2728
from mangopaysdk.tools.storages.memorystoragestrategy import MemoryStorageStrategy
2829
from mangopaysdk.types.pagination import Pagination
2930
from mangopaysdk.types.bankaccountdetailsiban import BankAccountDetailsIBAN
@@ -55,14 +56,24 @@ def buildNewMangoPayApi(self):
5556
sdk.OAuthTokenManager.RegisterCustomStorageStrategy(MemoryStorageStrategy())
5657
return sdk
5758

59+
def getNewAddress(self):
60+
adr = Address()
61+
adr.AddressLine1 = "Address line 1"
62+
adr.AddressLine2 = "Address line 2"
63+
adr.City = "City"
64+
adr.Region = "Region"
65+
adr.PostalCode = "11222"
66+
adr.Country = "PL"
67+
return adr
68+
5869
def getJohn(self):
5970
"""Creates TestBase._john (test natural user) if not created yet"""
6071
if (self._john == None):
6172
user = UserNatural()
6273
user.FirstName = "John"
6374
user.LastName = "Doe"
6475
user.Email = "john.doe@sample.org"
65-
user.Address = "Some Address"
76+
user.Address = self.getNewAddress()
6677
user.Birthday = int(time.mktime((1975, 12, 21, 0,0,0, -1, -1, -1)))
6778
user.Nationality = "FR"
6879
user.CountryOfResidence = "FR"
@@ -80,7 +91,7 @@ def getMatrix(self):
8091
user.Name = "MartixSampleOrg"
8192
user.Email = "john.doe@sample.org"
8293
user.LegalPersonType = "BUSINESS"
83-
user.HeadquartersAddress = "Some Address"
94+
user.HeadquartersAddress = self.getNewAddress()
8495
user.LegalRepresentativeFirstName = john.FirstName
8596
user.LegalRepresentativeLastName = john.LastName
8697
user.LegalRepresentativeAddress = john.Address
@@ -428,7 +439,12 @@ def assertEqualInputProps(self, entity1, entity2, asFreshlyCreated = False):
428439
self.assertEqual(entity1.FirstName, entity2.FirstName)
429440
self.assertEqual(entity1.LastName, entity2.LastName)
430441
self.assertEqual(entity1.Email, entity2.Email)
431-
self.assertEqual(entity1.Address, entity2.Address)
442+
self.assertEqual(entity1.Address.AddressLine1, entity2.Address.AddressLine1)
443+
self.assertEqual(entity1.Address.AddressLine2, entity2.Address.AddressLine2)
444+
self.assertEqual(entity1.Address.City, entity2.Address.City)
445+
self.assertEqual(entity1.Address.Country, entity2.Address.Country)
446+
self.assertEqual(entity1.Address.PostalCode, entity2.Address.PostalCode)
447+
self.assertEqual(entity1.Address.Region, entity2.Address.Region)
432448
self.assertEqual(entity1.Birthday, entity2.Birthday)
433449
self.assertEqual(entity1.Nationality, entity2.Nationality)
434450
self.assertEqual(entity1.CountryOfResidence, entity2.CountryOfResidence)
@@ -439,7 +455,12 @@ def assertEqualInputProps(self, entity1, entity2, asFreshlyCreated = False):
439455
self.assertEqual(entity1.Tag, entity2.Tag)
440456
self.assertEqual(entity1.PersonType, entity2.PersonType)
441457
self.assertEqual(entity1.Name, entity2.Name)
442-
self.assertEqual(entity1.HeadquartersAddress, entity2.HeadquartersAddress)
458+
self.assertEqual(entity1.HeadquartersAddress.AddressLine1, entity2.HeadquartersAddress.AddressLine1)
459+
self.assertEqual(entity1.HeadquartersAddress.AddressLine2, entity2.HeadquartersAddress.AddressLine2)
460+
self.assertEqual(entity1.HeadquartersAddress.City, entity2.HeadquartersAddress.City)
461+
self.assertEqual(entity1.HeadquartersAddress.Country, entity2.HeadquartersAddress.Country)
462+
self.assertEqual(entity1.HeadquartersAddress.PostalCode, entity2.HeadquartersAddress.PostalCode)
463+
self.assertEqual(entity1.HeadquartersAddress.Region, entity2.HeadquartersAddress.Region)
443464
self.assertEqual(entity1.LegalRepresentativeFirstName, entity2.LegalRepresentativeFirstName)
444465
self.assertEqual(entity1.LegalRepresentativeLastName, entity2.LegalRepresentativeLastName)
445466
#TODO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -454,7 +475,12 @@ def assertEqualInputProps(self, entity1, entity2, asFreshlyCreated = False):
454475
self.assertEqual(entity1.UserId, entity2.UserId)
455476
self.assertEqual(entity1.Type, entity2.Type)
456477
self.assertEqual(entity1.OwnerName, entity2.OwnerName)
457-
self.assertEqual(entity1.OwnerAddress, entity2.OwnerAddress)
478+
self.assertEqual(entity1.OwnerAddress.AddressLine1, entity2.OwnerAddress.AddressLine1)
479+
self.assertEqual(entity1.OwnerAddress.AddressLine2, entity2.OwnerAddress.AddressLine2)
480+
self.assertEqual(entity1.OwnerAddress.City, entity2.OwnerAddress.City)
481+
self.assertEqual(entity1.OwnerAddress.Country, entity2.OwnerAddress.Country)
482+
self.assertEqual(entity1.OwnerAddress.PostalCode, entity2.OwnerAddress.PostalCode)
483+
self.assertEqual(entity1.OwnerAddress.Region, entity2.OwnerAddress.Region)
458484
if (entity1.Type == 'IBAN'):
459485
self.assertEqual(entity1.Details.IBAN, entity2.Details.IBAN)
460486
self.assertEqual(entity1.Details.BIC, entity2.Details.BIC)

0 commit comments

Comments
 (0)