bug fix
This commit is contained in:
parent
a318185147
commit
7ff91acb82
2 changed files with 32 additions and 28 deletions
|
|
@ -104,16 +104,15 @@ class PaymentRequest(models.Model):
|
||||||
gateway_class = get_gateway_class(self.gateway)
|
gateway_class = get_gateway_class(self.gateway)
|
||||||
return gateway_class.objects.get(payment_request=self)
|
return gateway_class.objects.get(payment_request=self)
|
||||||
|
|
||||||
def set_gateway(self, data):
|
def set_gateway(self, gateway_label):
|
||||||
preferred_gateways = self.get_preferred_gateways()
|
preferred_gateways = self.get_preferred_gateways()
|
||||||
for gateway_label in preferred_gateways:
|
if gateway_label in preferred_gateways:
|
||||||
if gateway_label in data:
|
self.gateway = gateway_label
|
||||||
self.gateway = gateway_label
|
gateway_class = get_gateway_class(gateway_label)
|
||||||
gateway_class = get_gateway_class(gateway_label)
|
pg = gateway_class.objects.create(payment_request=self)
|
||||||
pg = gateway_class.objects.create(payment_request=self)
|
pg.payment_request = self
|
||||||
pg.payment_request = self
|
|
||||||
|
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
if not self.gateway:
|
if not self.gateway:
|
||||||
raise Exception('No gateway')
|
raise Exception('No gateway')
|
||||||
|
|
@ -122,7 +121,7 @@ class PaymentRequest(models.Model):
|
||||||
def reference_number(self):
|
def reference_number(self):
|
||||||
gateway_tools = self.get_gateway_tools()
|
gateway_tools = self.get_gateway_tools()
|
||||||
if gateway_tools:
|
if gateway_tools:
|
||||||
return f'{self.gateway.value}{gateway_tools.pk}'
|
return f'{self.gateway}{gateway_tools.pk}'
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return '00000000'
|
return '00000000'
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ from django.shortcuts import render
|
||||||
from utils.commons import calculate_pna_commission
|
from utils.commons import calculate_pna_commission
|
||||||
from .constans import StateChoices
|
from .constans import StateChoices
|
||||||
from .forms import PaymentRequestForm
|
from .forms import PaymentRequestForm
|
||||||
from .models import PaymentRequest
|
from .models import PaymentRequest, get_gateway_class
|
||||||
from .serializers import PaymentRequestSerializer, CommissionSerializer
|
from .serializers import PaymentRequestSerializer, CommissionSerializer
|
||||||
from ..core.models import BasePGModel
|
from ..core.models import BasePGModel
|
||||||
from ..gooyal_oauth2.utils import get_application
|
from ..gooyal_oauth2.utils import get_application
|
||||||
|
|
@ -144,30 +144,35 @@ class PaymentRequestView(UpdateView):
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
self.object = form.save()
|
self.object = form.save()
|
||||||
charge_request: PaymentRequest = self.get_object()
|
charge_request: PaymentRequest = self.get_object()
|
||||||
|
application_policy = charge_request.get_policy()
|
||||||
|
preferred_gateways = application_policy.get_preferred_gateways()
|
||||||
|
|
||||||
charge_request.set_gateway(form.data)
|
if preferred_gateways:
|
||||||
charge_request.save_commission()
|
for gateway_label in preferred_gateways:
|
||||||
|
if gateway_label in form.data:
|
||||||
|
charge_request.set_gateway(gateway_label)
|
||||||
|
charge_request.save_commission()
|
||||||
|
|
||||||
tool:BasePGModel = charge_request.get_gateway_tools()
|
tool:BasePGModel = charge_request.get_gateway_tools()
|
||||||
|
tool.make_request()
|
||||||
|
|
||||||
tool.make_request()
|
redirect_url = tool.get_pg_page_url()
|
||||||
|
|
||||||
redirect_url = tool.get_pg_page_url()
|
if redirect_url:
|
||||||
|
if tool.redirect_method == 'GET':
|
||||||
if redirect_url:
|
return HttpResponseRedirect(redirect_url)
|
||||||
if tool.redirect_method == 'GET':
|
elif tool.redirect_method == 'POST':
|
||||||
return HttpResponseRedirect(redirect_url)
|
print(redirect_url)
|
||||||
elif tool.redirect_method == 'POST':
|
return
|
||||||
print(redirect_url)
|
else:
|
||||||
else:
|
pass
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
else:
|
|
||||||
messages.error(self.request, 'can not redirect to payment gateway')
|
messages.error(self.request, 'can not redirect to payment gateway')
|
||||||
messages.info(self.request, 'در پردازش صفحه خطایی وجود دارد.')
|
messages.info(self.request, 'در پردازش صفحه خطایی وجود دارد.')
|
||||||
# TODO: redirect to error page
|
# TODO: redirect to error page
|
||||||
return HttpResponseRedirect(reverse('pg:payment-confirm-view', kwargs={'uuid': charge_request.uuid}))
|
return HttpResponseRedirect(reverse('pg:payment-confirm-view', kwargs={'uuid': charge_request.uuid}))
|
||||||
|
|
||||||
|
|
||||||
@method_decorator(csrf_exempt, name='dispatch')
|
@method_decorator(csrf_exempt, name='dispatch')
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue