application request create

This commit is contained in:
Sayyid Hamid Mahdavi 2025-06-05 21:35:51 +03:30
parent 6c4cf0861a
commit e5c58c98aa
2 changed files with 35 additions and 1 deletions

View file

@ -21,3 +21,21 @@ class PaymentRequestSerializer(serializers.ModelSerializer):
read_only_fields = ['uuid', 'user','updated_at', 'state', 'created_at'] read_only_fields = ['uuid', 'user','updated_at', 'state', 'created_at']
class ApplicationPaymentRequestSerializer(serializers.ModelSerializer):
# uuid = serializers.UUIDField(required=True)
class Meta:
model = PaymentRequest
fields = (
'uuid',
'user',
"created_at",
"state",
'amount',
'updated_at',
'callback_url',
"phone_number"
)
read_only_fields = ['uuid', 'updated_at', 'state', 'created_at']

View file

@ -12,9 +12,10 @@ from rest_framework.views import APIView
from .forms import PaymentRequestForm from .forms import PaymentRequestForm
from .models import PaymentRequest, GatewayChoise from .models import PaymentRequest, GatewayChoise
from .serializers import PaymentRequestSerializer from .serializers import PaymentRequestSerializer, ApplicationPaymentRequestSerializer
from .constans import StateChoices from .constans import StateChoices
from ..gooyal_oauth2.utils import get_application from ..gooyal_oauth2.utils import get_application
from ..users.models import User
class PaymentRequestCreateApiView(generics.CreateAPIView): class PaymentRequestCreateApiView(generics.CreateAPIView):
@ -31,6 +32,21 @@ class PaymentRequestCreateApiView(generics.CreateAPIView):
# TODO: web view # TODO: web view
# charge_request.charge_wallet_balance() # charge_request.charge_wallet_balance()
class ApplicationPaymentRequestCreateApiView(generics.CreateAPIView):
permission_classes = [IsAuthenticatedOrTokenHasScope]
serializer_class = ApplicationPaymentRequestSerializer
required_scopes = ['ipg.application:request_user_charge'] # TODO: is it good scope?
model = PaymentRequest
def perform_create(self, serializer):
user_id = serializer.validated_data['user']
user, created = User.objects.get_or_create(id=user_id)
application = get_application(self.request)
charge_request: PaymentRequest = serializer.save(user=user, application=application)
# TODO: web view
# charge_request.charge_wallet_balance()
@method_decorator(csrf_exempt, name='dispatch') @method_decorator(csrf_exempt, name='dispatch')
class PaymentRequestView(UpdateView): class PaymentRequestView(UpdateView):
template_name = 'pg/payment-request.html' template_name = 'pg/payment-request.html'