예제 #1
0
    def create(self, debited_funds, fees=None, secure_mode_return_url=None):
        pay_in = PayIn()
        pay_in.AuthorId = self.mangopay_user.mangopay_id
        pay_in.CreditedUserId = self.mangopay_wallet.mangopay_user.mangopay_id
        pay_in.CreditedWalletId = self.mangopay_wallet.mangopay_id
        pay_in.DebitedFunds = python_money_to_mangopay_money(debited_funds)
        if not fees:
            fees = PythonMoney(0, debited_funds.currency)
        pay_in.Fees = python_money_to_mangopay_money(fees)

        payment_details = PayInPaymentDetailsCard()
        payment_details.CardType = "CB_VISA_MASTERCARD"
        pay_in.PaymentDetails = payment_details

        execution_details = PayInExecutionDetailsDirect()
        execution_details.CardId = self.mangopay_card.mangopay_id
        execution_details.SecureModeReturnURL = secure_mode_return_url
        execution_details.SecureMode = "DEFAULT"
        pay_in.ExecutionDetails = execution_details

        client = get_mangopay_api_client()
        created_pay_in = client.payIns.Create(pay_in)

        self.mangopay_id = created_pay_in.Id
        self._update(created_pay_in)
    def getJohnsPayInCardDirect(self, wallet=None):
        """Creates Pay-In Card Direct object
        return PayIn
        """
        if wallet == None:
            wallet = self.getJohnsWallet()

        cardRegistration = CardRegistration()
        cardRegistration.UserId = wallet.Owners[0]
        cardRegistration.Currency = 'EUR'
        cardRegistration = self.sdk.cardRegistrations.Create(cardRegistration)
        cardRegistration.RegistrationData = self.getPaylineCorrectRegistartionData(
            cardRegistration)
        cardRegistration = self.sdk.cardRegistrations.Update(cardRegistration)
        card = self.sdk.cards.Get(cardRegistration.CardId)

        # create pay-in CARD DIRECT
        payIn = PayIn()
        payIn.CreditedWalletId = wallet.Id
        payIn.AuthorId = wallet.Owners[0]
        payIn.DebitedFunds = Money()
        payIn.DebitedFunds.Amount = 10000
        payIn.DebitedFunds.Currency = 'EUR'
        payIn.Fees = Money()
        payIn.Fees.Amount = 0
        payIn.Fees.Currency = 'EUR'
        # payment type as CARD
        payIn.PaymentDetails = PayInPaymentDetailsCard()
        payIn.PaymentDetails.CardType = card.CardType
        # execution type as DIRECT
        payIn.ExecutionDetails = PayInExecutionDetailsDirect()
        payIn.ExecutionDetails.CardId = card.Id
        payIn.ExecutionDetails.SecureModeReturnURL = 'http://test.com'
        return self.sdk.payIns.Create(payIn)
예제 #3
0
 def Get(self, pay_in_id):
     pay_in = PayIn()
     pay_in.Id = pay_in_id
     pay_in.ExecutionDate = 12312312
     pay_in.ExecutionDetails = PayInExecutionDetailsDirect()
     pay_in.ExecutionDetails.SecureModeRedirectURL = "https://test.com"
     pay_in.Status = "SUCCEEDED"
     return pay_in
예제 #4
0
    def test_PayIns_Create_DirectDebitDirect(self):
        #	! IMPORTANT NOTE !
        #
        # This test needs your manual confirmation on the web page (see note below)
        # Comment out line below to test payins with a mandate.
        return

        wallet = self.getJohnsWallet()
        user = self.getJohn()
        bankAccountId = self.getJohnsAccount().Id
        returnUrl = 'http://test.test'
        mandatePost = Mandate()
        mandatePost.BankAccountId = bankAccountId
        mandatePost.Culture = 'EN'
        mandatePost.ReturnURL = returnUrl
        mandate = self.sdk.mandates.Create(mandatePost)

        #	! IMPORTANT NOTE !
        #
        #	In order to make this test pass, at this place you have to set a breakpoint,
        #	navigate to URL the mandate.RedirectURL property points to and click "CONFIRM" button.

        payIn = PayIn()
        payIn.CreditedWalletId = wallet.Id
        payIn.AuthorId = user.Id
        payIn.DebitedFunds = Money()
        payIn.DebitedFunds.Amount = 1000
        payIn.DebitedFunds.Currency = 'EUR'
        payIn.Fees = Money()
        payIn.Fees.Amount = 1
        payIn.Fees.Currency = 'EUR'

        payIn.PaymentDetails = PayInPaymentDetailsDirectDebit()
        payIn.PaymentDetails.MandateId = mandate.Id
        payIn.ExecutionDetails = PayInExecutionDetailsDirect()

        createPayIn = self.sdk.payIns.Create(payIn)

        self.assertTrue(int(createPayIn.Id) > 0)
        self.assertEqual(wallet.Id, createPayIn.CreditedWalletId)
        self.assertEqual('DIRECT_DEBIT', createPayIn.PaymentType)
        self.assertIsInstance(createPayIn.PaymentDetails,
                              PayInPaymentDetailsDirectDebit)
        self.assertEqual(createPayIn.PaymentDetails.MandateId, mandate.Id)
        self.assertEqual('DIRECT', createPayIn.ExecutionType)
        self.assertIsInstance(createPayIn.ExecutionDetails,
                              PayInExecutionDetailsDirect)
        self.assertEqual(user.Id, createPayIn.AuthorId)
        self.assertEqual('CREATED', createPayIn.Status)
        self.assertEqual('PAYIN', createPayIn.Type)
        self.assertIsInstance(createPayIn.DebitedFunds, Money)
        self.assertEqual(1000, createPayIn.DebitedFunds.Amount)
        self.assertEqual('EUR', createPayIn.DebitedFunds.Currency)
        self.assertIsInstance(createPayIn.Fees, Money)
        self.assertEqual(1, createPayIn.Fees.Amount)
        self.assertEqual('EUR', createPayIn.Fees.Currency)
예제 #5
0
    def create(self, secure_mode_return_url):
        pay_in = PayIn()
        pay_in.AuthorId = self.mangopay_user.mangopay_id
        pay_in.CreditedUserId = self.mangopay_user.mangopay_id
        pay_in.CreditedWalletId = self.mangopay_wallet.mangopay_id
        pay_in.DebitedFunds = python_money_to_mangopay_money(
            self.debited_funds)
        pay_in.Fees = python_money_to_mangopay_money(self.fees)

        payment_details = PayInPaymentDetailsCard()
        payment_details.CardType = "CB_VISA_MASTERCARD"
        pay_in.PaymentDetails = payment_details

        execution_details = PayInExecutionDetailsDirect()
        execution_details.CardId = self.mangopay_card.mangopay_id
        execution_details.SecureModeReturnURL = secure_mode_return_url
        execution_details.SecureMode = "DEFAULT"
        pay_in.ExecutionDetails = execution_details

        client = get_mangopay_api_client()
        created_pay_in = client.payIns.Create(pay_in)

        self.mangopay_id = created_pay_in.Id
        self._update(created_pay_in)
예제 #6
0
    def getJohnsWalletWithMoney(self, amount=10000):
        """Creates static JohnsWallet (wallets belonging to John) if not created yet
        return Wallet
        """
        if self._johnsWalletWithMoney == None:
            john = self.getJohn()
            wallet = Wallet()
            wallet.Owners = [john.Id]
            wallet.Currency = 'EUR'
            wallet.Description = 'WALLET IN EUR'
            wallet = self.sdk.wallets.Create(wallet)
            cardRegistration = CardRegistration()
            cardRegistration.UserId = wallet.Owners[0]
            cardRegistration.Currency = 'EUR'
            cardRegistration = self.sdk.cardRegistrations.Create(
                cardRegistration)
            cardRegistration.RegistrationData = self.getPaylineCorrectRegistartionData(
                cardRegistration)
            cardRegistration = self.sdk.cardRegistrations.Update(
                cardRegistration)
            card = self.sdk.cards.Get(cardRegistration.CardId)
            # create pay-in CARD DIRECT
            payIn = PayIn()
            payIn.CreditedWalletId = wallet.Id
            payIn.AuthorId = cardRegistration.UserId
            payIn.DebitedFunds = Money()
            payIn.DebitedFunds.Amount = amount
            payIn.DebitedFunds.Currency = 'EUR'
            payIn.Fees = Money()
            payIn.Fees.Amount = 0
            payIn.Fees.Currency = 'EUR'
            # payment type as CARD
            payIn.PaymentDetails = PayInPaymentDetailsCard()
            if (card.CardType == 'CB' or card.CardType == 'VISA'
                    or card.CardType == 'MASTERCARD'
                    or card.CardType == CardType.CB_VISA_MASTERCARD):
                payIn.PaymentDetails.CardType = CardType.CB_VISA_MASTERCARD
            # elif (card.CardType == CardType.AMEX):
            #    payIn.PaymentDetails.CardType = CardType.AMEX

            # execution type as DIRECT
            payIn.ExecutionDetails = PayInExecutionDetailsDirect()
            payIn.ExecutionDetails.CardId = card.Id
            payIn.ExecutionDetails.SecureModeReturnURL = 'http://test.com'
            # create Pay-In
            self.sdk.payIns.Create(payIn)
            self._johnsWalletWithMoney = self.sdk.wallets.Get(wallet.Id)
        return self._johnsWalletWithMoney
예제 #7
0
    def getJohnsPayInBankWireDirect(self):
        wallet = self.getJohnsWallet()
        payIn = PayIn()
        payIn.CreditedWalletId = wallet.Id
        payIn.AuthorId = wallet.Owners[0]

        # payment type as CARD
        payIn.PaymentDetails = PayInPaymentDetailsBankWire()
        payIn.PaymentDetails.DeclaredDebitedFunds = Money()
        payIn.PaymentDetails.DeclaredFees = Money()
        payIn.PaymentDetails.DeclaredDebitedFunds.Currency = 'EUR'
        payIn.PaymentDetails.DeclaredFees.Currency = 'EUR'
        payIn.PaymentDetails.DeclaredDebitedFunds.Amount = 10000
        payIn.PaymentDetails.DeclaredFees.Amount = 1000

        # execution type as DIRECT
        payIn.ExecutionDetails = PayInExecutionDetailsDirect()
        payIn.ExecutionType = ExecutionType.DIRECT
        return self.sdk.payIns.Create(payIn)
예제 #8
0
    def test_PayIns_PreAuthorizedDirect(self):
        cardPreAuthorization = self.getJohnsCardPreAuthorization()
        wallet = self.getJohnsWalletWithMoney()
        user = self.getJohn()
        # create pay-in PRE-AUTHORIZED DIRECT
        payIn = PayIn()
        payIn.CreditedWalletId = wallet.Id
        payIn.AuthorId = user.Id
        payIn.DebitedFunds = Money()
        payIn.DebitedFunds.Amount = 1000
        payIn.DebitedFunds.Currency = 'EUR'
        payIn.Fees = Money()
        payIn.Fees.Amount = 0
        payIn.Fees.Currency = 'EUR'
        # payment type as CARD
        payIn.PaymentDetails = PayInPaymentDetailsPreAuthorized()
        payIn.PaymentDetails.PreauthorizationId = cardPreAuthorization.Id
        # execution type as DIRECT
        payIn.ExecutionDetails = PayInExecutionDetailsDirect()
        payIn.ExecutionDetails.SecureModeReturnURL = 'http://test.com'

        createPayIn = self.sdk.payIns.Create(payIn)

        self.assertTrue(len(createPayIn.Id) > 0)
        self.assertEqual(wallet.Id, createPayIn.CreditedWalletId)
        self.assertEqual('PREAUTHORIZED', createPayIn.PaymentType)
        self.assertIsInstance(createPayIn.PaymentDetails,
                              PayInPaymentDetailsPreAuthorized)
        self.assertEqual('DIRECT', createPayIn.ExecutionType)
        self.assertIsInstance(createPayIn.ExecutionDetails,
                              PayInExecutionDetailsDirect)
        self.assertIsInstance(createPayIn.DebitedFunds, Money)
        self.assertIsInstance(createPayIn.CreditedFunds, Money)
        self.assertIsInstance(createPayIn.Fees, Money)
        self.assertEqual(user.Id, createPayIn.AuthorId)
        self.assertEqual('SUCCEEDED', createPayIn.Status)
        self.assertEqual('PAYIN', createPayIn.Type)
예제 #9
0
 def _get_execution_details(self):
     execution_details = PayInExecutionDetailsDirect()
     execution_details.CardId = self.mangopay_card.mangopay_id
     execution_details.SecureModeReturnURL = self.secure_mode_return_url
     execution_details.SecureMode = "DEFAULT"
     return execution_details
예제 #10
0
 def _get_execution_details(self):
     return PayInExecutionDetailsDirect()
예제 #11
0
 def _get_execution_details(self):
     execution_details = PayInExecutionDetailsDirect()
     execution_details.CardId = self.mangopay_card.mangopay_id
     execution_details.SecureModeReturnURL = self.secure_mode_return_url
     execution_details.SecureMode = "DEFAULT"
     return execution_details