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']
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 .models import PaymentRequest, GatewayChoise
from .serializers import PaymentRequestSerializer
from .serializers import PaymentRequestSerializer, ApplicationPaymentRequestSerializer
from .constans import StateChoices
from ..gooyal_oauth2.utils import get_application
from ..users.models import User
class PaymentRequestCreateApiView(generics.CreateAPIView):
@ -31,6 +32,21 @@ class PaymentRequestCreateApiView(generics.CreateAPIView):
# TODO: web view
# 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')
class PaymentRequestView(UpdateView):
template_name = 'pg/payment-request.html'