Add /ipn/ API route to process PayPal IPNs

This commit is contained in:
2020-01-30 23:51:51 +00:00
parent c1e682478b
commit 8296295937
7 changed files with 353 additions and 6 deletions
+15 -4
View File
@@ -13,7 +13,9 @@ from fuzzywuzzy import fuzz, process
from collections import OrderedDict
import datetime
from . import models, serializers, utils
import requests
from . import models, serializers, utils, utils_paypal
from .permissions import (
is_admin_director,
AllowMetadata,
@@ -218,9 +220,7 @@ class UserView(views.APIView):
return Response(serializer.data)
class DoorViewSet(Base, List):
serializer_class = serializers.CardSerializer
class DoorViewSet(viewsets.ViewSet, List):
def list(self, request):
cards = models.Card.objects.filter(active_status='card_active')
active_member_cards = {}
@@ -246,6 +246,17 @@ class DoorViewSet(Base, List):
return Response(200)
class IpnViewSet(viewsets.ViewSet, Create):
def create(self, request):
try:
utils_paypal.process_paypal_ipn(request.data)
except BaseException as e:
print('Problem processing IPN: {} - {}'.format(e.__class__.__name__, str(e)))
finally:
return Response(200)
class RegistrationView(RegisterView):
serializer_class = serializers.RegistrationSerializer