Skip to content

Commit cc8b823

Browse files
Fixed: executing the PreAuthorized PayIns.
1 parent f5ad21f commit cc8b823

File tree

5 files changed

+49
-7
lines changed

5 files changed

+49
-7
lines changed

mangopaysdk/entities/payin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class PayIn (Transaction):
55

66
def __init__(self, id = None):
77
self.CreditedWalletId = None
8-
# PayInPaymentType {CARD, BANK_WIRE, AUTOMATIC_DEBIT, DIRECT_DEBIT }
8+
# PayInPaymentType {CARD, BANK_WIRE, AUTOMATIC_DEBIT, DIRECT_DEBIT, PREAUTHORIZED }
99
self.PaymentType = None
1010
# One of PayInPaymentDetails implementations, depending on PaymentType
1111
self.PaymentDetails = None
@@ -20,6 +20,7 @@ def GetDependsObjects(self):
2020
'PaymentType': {
2121
'_property_name': 'PaymentDetails',
2222
'CARD': 'PayInPaymentDetailsCard',
23+
'PREAUTHORIZED': 'PayInPaymentDetailsPreAuthorized',
2324
'BANK_WIRE': 'PayInPaymentDetailsBankWire'
2425
}, 'ExecutionType': {
2526
'_property_name': 'ExecutionDetails',

mangopaysdk/tools/apibase.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class ApiBase(object):
8888
'payins_bankwire-preauthorized_create' : ('/payins/bankwire/preauthorized/', 'POST'),
8989
'payins_bankwire-recurrentexecution_create' : ('/payins/bankwire/recurrent-pay-in-execution/', 'POST'),
9090

91-
'payins_preauthorized-direct_create' : ('/payins/PreAuthorized/direct/', 'POST'),
91+
'payins_preauthorized-direct_create' : ('/payins/preauthorized/direct/', 'POST'),
9292

9393
'payins_directcredit-web_create' : ('/payins/direct-credit/web/', 'POST'),
9494
'payins_directcredit-direct_create' : ('/payins/direct-credit/direct/', 'POST'),

mangopaysdk/types/payinpaymentdetailspreauthorized.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
class PayInPaymentDetailsPreAuthorized(PayInPaymentDetails):
5+
"""Class represents PreAuthorized type for mean of payment in PayIn entity."""
56

67
def __init__(self):
78
# The ID of the Preauthorization object

tests/testbase.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from mangopaysdk.types.payoutpaymentdetailsbankwire import PayOutPaymentDetailsBankWire
2222
from mangopaysdk.types.payinexecutiondetailsdirect import PayInExecutionDetailsDirect
2323
from mangopaysdk.types.payinpaymentdetailsbankwire import PayInPaymentDetailsBankWire
24+
from mangopaysdk.types.payinpaymentdetailspreauthorized import PayInPaymentDetailsPreAuthorized
2425
from mangopaysdk.types.money import Money
2526
from mangopaysdk.tools.storages.memorystoragestrategy import MemoryStorageStrategy
2627
from mangopaysdk.types.pagination import Pagination

tests/testpayins.py

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@
66
from mangopaysdk.types.payinpaymentdetailscard import PayInPaymentDetailsCard
77
from mangopaysdk.types.payinexecutiondetailsweb import PayInExecutionDetailsWeb
88
from mangopaysdk.types.payinpaymentdetailsbankwire import PayInPaymentDetailsBankWire
9+
from mangopaysdk.types.payinpaymentdetailspreauthorized import PayInPaymentDetailsPreAuthorized
10+
from mangopaysdk.types.money import Money
911

1012

1113
class Test_PayIns(TestBase):
1214
"Tests methods for pay-ins"
1315

1416
def test_PayIns_Create_CardWeb(self):
1517
payIn = self.getJohnsPayInCardWeb()
16-
self.assertTrue(int(payIn.Id) > 0)
18+
self.assertTrue(len(payIn.Id) > 0)
1719
self.assertEqual(payIn.PaymentType, PayInPaymentType.CARD)
1820
self.assertIsInstance(payIn.PaymentDetails, PayInPaymentDetailsCard)
1921
self.assertEqual(payIn.ExecutionType, ExecutionType.WEB)
@@ -40,7 +42,7 @@ def test_PayIns_Create_CardDirect(self):
4042
payIn = self.getJohnsPayInCardDirect()
4143
wallet = self.sdk.wallets.Get(johnWallet.Id)
4244
user = self.getJohn()
43-
self.assertTrue(int(payIn.Id) > 0)
45+
self.assertTrue(len(payIn.Id) > 0)
4446
self.assertEqual(wallet.Id, payIn.CreditedWalletId)
4547
self.assertEqual(PayInPaymentType.CARD, payIn.PaymentType)
4648
self.assertIsInstance(payIn.PaymentDetails, PayInPaymentDetailsCard)
@@ -71,16 +73,53 @@ def test_PayIns_CreateRefund_CardDirect(self):
7173
payIn = self.getJohnsPayInCardDirect(wallet)
7274
walletAfterPayIn = self.sdk.wallets.Get(wallet.Id)
7375
self.assertEqual(walletAfterPayIn.Balance.Amount, payIn.DebitedFunds.Amount)
74-
self.assertTrue(int(payIn.Id) > 0)
76+
self.assertTrue(len(payIn.Id) > 0)
7577

7678
refund = self.getJohnsRefundForPayIn(payIn)
7779
walletAfterRefund = self.sdk.wallets.Get(wallet.Id)
78-
self.assertTrue(int(refund.Id) > 0)
80+
self.assertTrue(len(refund.Id) > 0)
7981
self.assertTrue(refund.DebitedFunds.Amount, payIn.DebitedFunds.Amount)
8082
self.assertEqual(walletAfterRefund.Balance.Amount, walletAfterPayIn.Balance.Amount - payIn.DebitedFunds.Amount)
8183
self.assertEqual(TransactionType.PAYOUT, refund.Type)
8284
self.assertEqual(TransactionNature.REFUND, refund.Nature)
8385

86+
def test_PayIns_PreAuthorizedDirect(self):
87+
cardPreAuthorization = self.getJohnsCardPreAuthorization()
88+
wallet = self.getJohnsWalletWithMoney()
89+
user = self.getJohn()
90+
# create pay-in PRE-AUTHORIZED DIRECT
91+
payIn = PayIn()
92+
payIn.CreditedWalletId = wallet.Id
93+
payIn.AuthorId = user.Id
94+
payIn.DebitedFunds = Money()
95+
payIn.DebitedFunds.Amount = 1000
96+
payIn.DebitedFunds.Currency = 'EUR'
97+
payIn.Fees = Money()
98+
payIn.Fees.Amount = 0
99+
payIn.Fees.Currency = 'EUR'
100+
# payment type as CARD
101+
payIn.PaymentDetails = PayInPaymentDetailsPreAuthorized()
102+
payIn.PaymentDetails.PreauthorizationId = cardPreAuthorization.Id
103+
# execution type as DIRECT
104+
payIn.ExecutionDetails = PayInExecutionDetailsDirect()
105+
payIn.ExecutionDetails.SecureModeReturnURL = 'http://test.com'
106+
107+
createPayIn = self.sdk.payIns.Create(payIn)
108+
109+
self.assertTrue(len(createPayIn.Id) > 0)
110+
self.assertEqual(wallet.Id, createPayIn.CreditedWalletId)
111+
self.assertEqual('PREAUTHORIZED', createPayIn.PaymentType)
112+
self.assertIsInstance(createPayIn.PaymentDetails, PayInPaymentDetailsPreAuthorized)
113+
self.assertEqual('DIRECT', createPayIn.ExecutionType)
114+
self.assertIsInstance(createPayIn.ExecutionDetails, PayInExecutionDetailsDirect)
115+
self.assertIsInstance(createPayIn.DebitedFunds, Money)
116+
self.assertIsInstance(createPayIn.CreditedFunds, Money)
117+
self.assertIsInstance(createPayIn.Fees, Money)
118+
self.assertEqual(user.Id, createPayIn.AuthorId)
119+
self.assertEqual('SUCCEEDED', createPayIn.Status)
120+
self.assertEqual('PAYIN', createPayIn.Type)
121+
122+
84123
def test_PayIns_Create_BankWireDirect(self):
85124
payIn = self.getJohnsPayInBankWireDirect()
86125
self.assertTrue(len(payIn.Id) > 0)
@@ -101,7 +140,7 @@ def test_PayIns_Create_BankWireDirect(self):
101140
def test_PayIns_Get_BankWireDirect(self):
102141
payIn = self.getJohnsPayInBankWireDirect()
103142
getPayIn = self.sdk.payIns.Get(payIn.Id)
104-
self.assertTrue(int(payIn.Id) > 0)
143+
self.assertTrue(len(payIn.Id) > 0)
105144
self.assertEqual(payIn.PaymentType, PayInPaymentType.BANK_WIRE)
106145
self.assertIsInstance(payIn.PaymentDetails, PayInPaymentDetailsBankWire)
107146
self.assertEqual(payIn.ExecutionType, ExecutionType.DIRECT)

0 commit comments

Comments
 (0)