sep
This commit is contained in:
parent
6bab3b28a8
commit
d749dedbef
5 changed files with 62 additions and 35 deletions
|
|
@ -7,7 +7,7 @@ from django.db import migrations, models
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('pg', '0005_fake'),
|
('pg', '0007_paymentrequest_commission'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Generated by Django 5.1.4 on 2026-03-09 16:25
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pg', '0008_sep'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='sep',
|
||||||
|
name='sep_order_id',
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='sep',
|
||||||
|
name='sep_originator',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='sep',
|
||||||
|
name='sep_ref_number',
|
||||||
|
field=models.CharField(blank=True, db_index=True, max_length=255, null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='paymentrequest',
|
||||||
|
name='gateway',
|
||||||
|
field=models.CharField(choices=[('fake', 'fake'), ('pna', 'pna'), ('sep', 'sep')], max_length=255),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -332,7 +332,7 @@ class SEP(BasePGModel):
|
||||||
|
|
||||||
def make_request(self):
|
def make_request(self):
|
||||||
self.payment_request.change_state(StateChoices.CREATED, StateChoices.IPG_PENDING, 'can not change state')
|
self.payment_request.change_state(StateChoices.CREATED, StateChoices.IPG_PENDING, 'can not change state')
|
||||||
amount = self.payment_request.amount
|
amount = self.payment_request.amount + self.payment_request.commission
|
||||||
description = 'from addwin ipg'
|
description = 'from addwin ipg'
|
||||||
callback_url = urllib.parse.urljoin(
|
callback_url = urllib.parse.urljoin(
|
||||||
settings.IPG_BASE_PUBLIC_URL,
|
settings.IPG_BASE_PUBLIC_URL,
|
||||||
|
|
@ -342,6 +342,8 @@ class SEP(BasePGModel):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = self.client.request_token(amount, callback_url, order_id, phone_number)
|
response = self.client.request_token(amount, callback_url, order_id, phone_number)
|
||||||
|
self.details['get_token_response'] = response
|
||||||
|
|
||||||
self.sep_status_code = response['status']
|
self.sep_status_code = response['status']
|
||||||
self.sep_status_message = response.get('title')
|
self.sep_status_message = response.get('title')
|
||||||
|
|
||||||
|
|
@ -349,7 +351,6 @@ class SEP(BasePGModel):
|
||||||
self.sep_token = response['token']
|
self.sep_token = response['token']
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.details['get_token_response'] = response
|
|
||||||
self.payment_request.change_state(self.payment_request.state, StateChoices.FAILED,
|
self.payment_request.change_state(self.payment_request.state, StateChoices.FAILED,
|
||||||
'error in sep gateway')
|
'error in sep gateway')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
@ -364,7 +365,7 @@ class SEP(BasePGModel):
|
||||||
def confirm_request(self, request=None):
|
def confirm_request(self, request=None):
|
||||||
if self.payment_request.state not in [StateChoices.IPG_PENDING]:
|
if self.payment_request.state not in [StateChoices.IPG_PENDING]:
|
||||||
messages.error(request, "وضعیت تراکنش در حالت مناسبی نیست.")
|
messages.error(request, "وضعیت تراکنش در حالت مناسبی نیست.")
|
||||||
return
|
return False, "وضعیت تراکنش در حالت مناسبی نیست."
|
||||||
|
|
||||||
print(dict(request.POST))
|
print(dict(request.POST))
|
||||||
post_dict = dict(request.POST)
|
post_dict = dict(request.POST)
|
||||||
|
|
@ -372,7 +373,7 @@ class SEP(BasePGModel):
|
||||||
# post = {'MID': ['0'], 'TerminalId': ['15336754'], 'RefNum': ['wSLVxHt51y3BjY9tkFXieaQAxHg6cmGp2X7B506RZs'], 'ResNum': ['10'], 'State': ['OK'], 'TraceNo': ['393594'], 'Amount': ['20000'], 'AffectiveAmount': ['20000'], 'Wage': [''], 'Rrn': ['224413541909'], 'SecurePan': ['504172******9210'], 'Status': ['2'], 'Token': ['dd830117c88a4e8284230430ccf6c553'], 'HashedCardNumber': ['6008617e6bab76997499446356f5c8b60288445650dd551fdf32007bcf2b14af']}
|
# post = {'MID': ['0'], 'TerminalId': ['15336754'], 'RefNum': ['wSLVxHt51y3BjY9tkFXieaQAxHg6cmGp2X7B506RZs'], 'ResNum': ['10'], 'State': ['OK'], 'TraceNo': ['393594'], 'Amount': ['20000'], 'AffectiveAmount': ['20000'], 'Wage': [''], 'Rrn': ['224413541909'], 'SecurePan': ['504172******9210'], 'Status': ['2'], 'Token': ['dd830117c88a4e8284230430ccf6c553'], 'HashedCardNumber': ['6008617e6bab76997499446356f5c8b60288445650dd551fdf32007bcf2b14af']}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ref_number = post_dict.get('ref_number')[0]
|
ref_number = post_dict.get('RefNum')[0]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
ref_number = None
|
ref_number = None
|
||||||
|
|
@ -398,15 +399,16 @@ class SEP(BasePGModel):
|
||||||
self.payment_request.charge_wallet_balance()
|
self.payment_request.charge_wallet_balance()
|
||||||
|
|
||||||
messages.success(request, 'شارژ انجام شد')
|
messages.success(request, 'شارژ انجام شد')
|
||||||
|
return True, 'شارژ انجام شد'
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
messages.error(request, str(e))
|
messages.error(request, str(e))
|
||||||
|
return False, "خطایی رخ داده است."
|
||||||
else:
|
else:
|
||||||
print(request.POST)
|
print(request.POST)
|
||||||
messages.error(request, "نتیجه تراکنش از سمت درگاه دریافت نشد.")
|
messages.error(request, "نتیجه تراکنش از سمت درگاه دریافت نشد.")
|
||||||
|
return False, "نتیجه تراکنش از سمت درگاه دریافت نشد."
|
||||||
|
|
||||||
|
|
||||||
def reverse_request(self):
|
def reverse_request(self):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
|
||||||
|
|
@ -75,33 +75,26 @@ class PaymentRequestView(UpdateView):
|
||||||
slug_url_kwarg = 'uuid'
|
slug_url_kwarg = 'uuid'
|
||||||
|
|
||||||
# TODO: remove it in future
|
# TODO: remove it in future
|
||||||
def get(self, request, *args, **kwargs):
|
# def get(self, request, *args, **kwargs):
|
||||||
charge_request: PaymentRequest = self.get_object()
|
# charge_request: PaymentRequest = self.get_object()
|
||||||
charge_request.set_gateway({'pna': True})
|
# if charge_request.state == StateChoices.FAILED:
|
||||||
charge_request.save_commission()
|
# return render(request, 'pg/payment_failure.html', {
|
||||||
tool = charge_request.get_gateway_tools()
|
# 'object': charge_request
|
||||||
tool.make_request()
|
# })
|
||||||
charge_request.refresh_from_db()
|
# redirect_url = tool.get_pg_page_url()
|
||||||
if charge_request.state == StateChoices.FAILED:
|
# return HttpResponseRedirect(redirect_url)
|
||||||
return render(request, 'pg/payment_failure.html', {
|
#
|
||||||
'object': charge_request
|
# # TODO: remove it in future
|
||||||
})
|
# def post(self, request, *args, **kwargs):
|
||||||
redirect_url = tool.get_pg_page_url()
|
# charge_request: PaymentRequest = self.get_object()
|
||||||
return HttpResponseRedirect(redirect_url)
|
# tool = charge_request.get_gateway_tools()
|
||||||
|
# charge_request.refresh_from_db()
|
||||||
# TODO: remove it in future
|
# if charge_request.state == StateChoices.FAILED:
|
||||||
def post(self, request, *args, **kwargs):
|
# return render(request, 'pg/payment_failure.html', {
|
||||||
charge_request: PaymentRequest = self.get_object()
|
# 'object': charge_request
|
||||||
charge_request.set_gateway({'pna': True})
|
# })
|
||||||
tool = charge_request.get_gateway_tools()
|
# redirect_url = tool.get_pg_page_url()
|
||||||
tool.make_request()
|
# return HttpResponseRedirect(redirect_url)
|
||||||
charge_request.refresh_from_db()
|
|
||||||
if charge_request.state == StateChoices.FAILED:
|
|
||||||
return render(request, 'pg/payment_failure.html', {
|
|
||||||
'object': charge_request
|
|
||||||
})
|
|
||||||
redirect_url = tool.get_pg_page_url()
|
|
||||||
return HttpResponseRedirect(redirect_url)
|
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
# return ChargeRequest.objects.all()
|
# return ChargeRequest.objects.all()
|
||||||
|
|
@ -113,6 +106,7 @@ class PaymentRequestView(UpdateView):
|
||||||
charge_request: PaymentRequest = self.get_object()
|
charge_request: PaymentRequest = self.get_object()
|
||||||
|
|
||||||
charge_request.set_gateway(form.data)
|
charge_request.set_gateway(form.data)
|
||||||
|
charge_request.save_commission()
|
||||||
|
|
||||||
tool:BasePGModel = charge_request.get_gateway_tools()
|
tool:BasePGModel = charge_request.get_gateway_tools()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ class SEPClient:
|
||||||
# success_token = {'status': 1, 'token': '38faf9c852664f3ea1ecf764f853a284'}
|
# success_token = {'status': 1, 'token': '38faf9c852664f3ea1ecf764f853a284'}
|
||||||
# failed_token = {'status': -1, 'errorCode': '5', 'errorDesc': 'پارامترهای ارسال شده نامعتبر است.; شماره ترمینال باید بزرگتر یا برابر با 1 باشد'}
|
# failed_token = {'status': -1, 'errorCode': '5', 'errorDesc': 'پارامترهای ارسال شده نامعتبر است.; شماره ترمینال باید بزرگتر یا برابر با 1 باشد'}
|
||||||
|
|
||||||
response = requests.post(self.token_request_url, json=data)
|
response = requests.post(self.request_token_url, json=data)
|
||||||
print(response.json())
|
print(response.json())
|
||||||
|
|
||||||
tmp = {}
|
tmp = {}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue