Skip to content

Commit f5840ff

Browse files
authored
Merge pull request #64 from Mangopay/payin_paypal
Implemented payins by PayPal
2 parents a2e074e + dbacced commit f5840ff

File tree

4 files changed

+34
-4
lines changed

4 files changed

+34
-4
lines changed

mangopaysdk/entities/payin.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from mangopaysdk.entities.transaction import Transaction
1+
from mangopaysdk.entities.transaction import Transaction
22

33

44
class PayIn (Transaction):
55

66
def __init__(self, id = None):
77
self.CreditedWalletId = None
8-
# PayInPaymentType {CARD, BANK_WIRE, AUTOMATIC_DEBIT, DIRECT_DEBIT, PREAUTHORIZED }
8+
# PayInPaymentType {CARD, BANK_WIRE, AUTOMATIC_DEBIT, DIRECT_DEBIT, PREAUTHORIZED, PAYPAL }
99
self.PaymentType = None
1010
# One of PayInPaymentDetails implementations, depending on PaymentType
1111
self.PaymentDetails = None
@@ -22,7 +22,8 @@ def GetDependsObjects(self):
2222
'CARD': 'PayInPaymentDetailsCard',
2323
'PREAUTHORIZED': 'PayInPaymentDetailsPreAuthorized',
2424
'BANK_WIRE': 'PayInPaymentDetailsBankWire',
25-
'DIRECT_DEBIT': 'PayInPaymentDetailsDirectDebit'
25+
'DIRECT_DEBIT': 'PayInPaymentDetailsDirectDebit',
26+
'PAYPAL': 'PayInPaymentDetailsPayPal'
2627
}, 'ExecutionType': {
2728
'_property_name': 'ExecutionDetails',
2829
'WEB': 'PayInExecutionDetailsWeb',

mangopaysdk/tools/apibase.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
from mangopaysdk.types.payinpaymentdetails import PayInPaymentDetails
3434
from mangopaysdk.types.payinpaymentdetailspreauthorized import PayInPaymentDetailsPreAuthorized
3535
from mangopaysdk.types.payinpaymentdetailsbankwire import PayInPaymentDetailsBankWire
36+
from mangopaysdk.types.payinpaymentdetailspaypal import PayInPaymentDetailsPayPal
3637
from mangopaysdk.types.payinpaymentdetailscard import PayInPaymentDetailsCard
3738
from mangopaysdk.types.payinpaymentdetailsdirectdebit import PayInPaymentDetailsDirectDebit
3839
from mangopaysdk.types.payoutpaymentdetails import PayOutPaymentDetails
@@ -95,6 +96,7 @@ class ApiBase(object):
9596
'payins_preauthorized-direct_create' : ('/payins/preauthorized/direct/', 'POST'),
9697

9798
'payins_bankwire-direct_create' : ('/payins/bankwire/direct/', 'POST'),
99+
'payins_paypal-web_create' : ('/payins/paypal/web/', 'POST'),
98100

99101
'payins_directdebit-web_create' : ('/payins/directdebit/web', 'POST'),
100102
'payins_directdebit-direct_create' : ('/payins/directdebit/direct', 'POST'),
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from mangopaysdk.types.payinpaymentdetails import PayInPaymentDetails
2+
3+
class PayInPaymentDetailsPayPal(PayInPaymentDetails):
4+
"""Class represents PayPal type for mean of payment in PayIn entity."""

tests/testpayins.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from mangopaysdk.types.money import Money
1212
from mangopaysdk.types.payinpaymentdetailsdirectdebit import PayInPaymentDetailsDirectDebit
1313
from mangopaysdk.types.payintemplateurloptions import PayInTemplateURLOptions
14+
from mangopaysdk.types.payinpaymentdetailspaypal import PayInPaymentDetailsPayPal
1415

1516

1617
class Test_PayIns(TestBase):
@@ -156,7 +157,29 @@ def test_PayIns_Get_BankWireDirect(self):
156157
self.assertIsNotNone(payIn.PaymentDetails.BankAccount.Type)
157158
self.assertEqual(payIn.PaymentDetails.BankAccount.Type, 'IBAN')
158159
self.assertIsNotNone(payIn.PaymentDetails.BankAccount.Details.IBAN)
159-
self.assertIsNotNone(payIn.PaymentDetails.BankAccount.Details.BIC)
160+
self.assertIsNotNone(payIn.PaymentDetails.BankAccount.Details.BIC)
161+
162+
def test_PayIns_Create_PayPal_Web(self):
163+
wallet = self.getJohnsWallet()
164+
user = self.getJohn()
165+
166+
payInPost = PayIn()
167+
payInPost.AuthorId = user.Id
168+
payInPost.DebitedFunds = Money()
169+
payInPost.DebitedFunds.Amount = 1000
170+
payInPost.DebitedFunds.Currency = 'EUR'
171+
payInPost.Fees = Money()
172+
payInPost.Fees.Amount = 0
173+
payInPost.Fees.Currency = 'EUR'
174+
payInPost.CreditedWalletId = wallet.Id
175+
payInPost.PaymentDetails = PayInPaymentDetailsPayPal()
176+
payInPost.ExecutionDetails = PayInExecutionDetailsWeb()
177+
payInPost.ExecutionDetails.ReturnURL = 'http://test.test'
178+
179+
payIn = self.sdk.payIns.Create(payInPost)
180+
181+
self.assertIsNotNone(payIn)
182+
self.assertTrue(payIn.PaymentType == 'PAYPAL')
160183

161184
def test_PayIns_Create_DirectDebitWeb(self):
162185
wallet = self.getJohnsWallet()

0 commit comments

Comments
 (0)