Skip to content

Commit

Permalink
Merge pull request #295 from Mangopay/feature/payconiq
Browse files Browse the repository at this point in the history
Added Payconiq Service
  • Loading branch information
SoloJr authored Sep 30, 2021
2 parents c816dbf + ce1ce98 commit 5c6e76c
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 1 deletion.
18 changes: 18 additions & 0 deletions mangopay/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -645,6 +645,24 @@ class Meta:
SelectQuery.identifier: '/payins'
}

@python_2_unicode_compatible
class PayconiqPayIn(PayIn):
author = ForeignKeyField(User, api_name='AuthorId', required=True)
debited_funds = MoneyField(api_name='DebitedFunds', required=True)
fees = MoneyField(api_name='Fees', required=True)
return_url = CharField(api_name='ReturnURL', required=False)
redirect_url = CharField(api_name='RedirectURL', required=False)
creation_date = DateField(api_name='CreationDate', required=False)
expiration_date = CharField(api_name='ExpirationDate', required=False)
deep_link_url = CharField(api_name='DeepLinkURL', required=False)

class Meta:
verbose_name = 'payin'
verbose_name_plural = 'payins'
url = {
InsertQuery.identifier: '/payins/payconiq/web',
SelectQuery.identifier: '/payins'
}

class ApplepayPayIn(PayIn):
tag = CharField(api_name='Applepay PayIn')
Expand Down
78 changes: 77 additions & 1 deletion tests/test_payins.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

from tests import settings
from tests.resources import (Wallet, PayIn, DirectPayIn, BankWirePayIn, BankWirePayInExternalInstruction, PayPalPayIn,
CardWebPayIn, DirectDebitWebPayIn, constants)
PayconiqPayIn, CardWebPayIn, DirectDebitWebPayIn, constants)
from tests.test_base import BaseTest, BaseTestLive


Expand Down Expand Up @@ -454,6 +454,82 @@ def test_create_paypal_payin(self):
for key, value in paypal_payin_params.items():
self.assertEqual(getattr(paypal_payin, key), value)

@responses.activate
def test_create_payoniq_payin(self):

self.mock_natural_user()
self.mock_legal_user()
self.mock_user_wallet()

self.register_mock({
'method': responses.POST,
'url': settings.MANGOPAY_API_SANDBOX_URL + settings.MANGOPAY_CLIENT_ID + '/payins/payconiq/web',
'body': {
"Id": "119683174",
"Tag": "custom meta",
"CreationDate" :1632985748,
"ExpirationDate" :1632986949,
"AuthorId": "119683166",
"CreditedUserId": "119683166",
"DebitedFunds": {
"Currency": "EUR",
"Amount": 22
},
"CreditedFunds": {
"Currency": "EUR",
"Amount": 12
},
"Fees": {
"Currency": "EUR",
"Amount": 10
},
"Status": "CREATED",
"ResultCode": None,
"ResultMessage": None,
"ExecutionDate": None,
"Type": "PAYIN",
"Nature": "REGULAR",
"CreditedWalletId": "119683167",
"DebitedWalletId": None,
"PaymentType": "PAYCONIQ",
"ExecutionType": "WEB",
"RedirectURL": "https://portal.payconiq.com/qrcode?c=https%3A%2F%2Fpayconiq.com%2Fpay%2F2%2F52e501a43d878e8846470b8f",
"ReturnURL": "http://www.my-site.com/returnURL",
"DeepLinkURL": "HTTPS://PAYCONIQ.COM/PAY/2/52E501A43D878E8846470B8F"
},
'status': 200
})

payconiq_payin_params = {
"tag": "custom meta",
"author": self.natural_user,
"debited_funds": Money(amount=22, currency='EUR'),
"fees": Money(amount=10, currency="EUR"),
"return_url": "http://www.my-site.com/returnURL",
"credited_wallet": self.legal_user_wallet,
"country": "BE"
}

payconiq_payin = PayconiqPayIn(**payconiq_payin_params)

self.assertIsNone(payconiq_payin.get_pk())
payconiq_payin.save()
self.assertIsInstance(payconiq_payin, PayconiqPayIn)
self.assertEqual(payconiq_payin.status, 'CREATED')
self.assertEqual(payconiq_payin.type, 'PAYIN')
self.assertEqual(payconiq_payin.payment_type, 'PAYCONIQ')
self.assertIsNotNone(payconiq_payin.get_pk())
self.assertTrue(payconiq_payin.redirect_url.startswith(
'https://portal.payconiq.com/qrcode'))

self.assertTrue(payconiq_payin.return_url.startswith('http://www.my-site.com'))

self.assertTrue(payconiq_payin.deep_link_url.startswith('HTTPS://PAYCONIQ.COM/PAY'))

self.assertEqual(payconiq_payin.debited_funds.amount, 22)

self.assertEqual(payconiq_payin.fees.amount, 10)

@responses.activate
def test_create_card_via_web_interface_payin(self):
self.mock_natural_user()
Expand Down

0 comments on commit 5c6e76c

Please sign in to comment.