update bank gateway
This commit is contained in:
@@ -4,11 +4,14 @@ import uuid
|
||||
from urllib import parse
|
||||
|
||||
import six
|
||||
from django.conf import settings as django_settings
|
||||
from django.db.models import Q
|
||||
from django.shortcuts import redirect
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
|
||||
from azbankgateways.utils import append_querystring, build_full_url
|
||||
|
||||
from .. import default_settings as settings
|
||||
from ..exceptions import (
|
||||
AmountDoesNotSupport,
|
||||
@@ -18,7 +21,6 @@ from ..exceptions import (
|
||||
SafeSettingsEnabled,
|
||||
)
|
||||
from ..models import Bank, CurrencyEnum, PaymentStatus
|
||||
from ..utils import append_querystring
|
||||
|
||||
|
||||
# TODO: handle and expire record after 15 minutes
|
||||
@@ -41,8 +43,12 @@ class BaseBank:
|
||||
def __init__(self, identifier: str, **kwargs):
|
||||
self.identifier = identifier
|
||||
self.default_setting_kwargs = kwargs
|
||||
self._custom_data: dict = {}
|
||||
self.set_default_settings()
|
||||
|
||||
def _is_strict_origin_policy_enabled(self):
|
||||
return django_settings.SECURE_REFERRER_POLICY == 'strict-origin-when-cross-origin'
|
||||
|
||||
@abc.abstractmethod
|
||||
def set_default_settings(self):
|
||||
"""default setting, like fetch merchant code, terminal id and etc"""
|
||||
@@ -162,6 +168,13 @@ class BaseBank:
|
||||
def get_mobile_number(self):
|
||||
return self._mobile_number
|
||||
|
||||
def set_custom_data(self, data: dict):
|
||||
"""تنظیم قابلیت های سفارشی برای درگاه"""
|
||||
self._custom_data = data
|
||||
|
||||
def get_custom_data(self):
|
||||
return self._custom_data
|
||||
|
||||
def set_client_callback_url(self, callback_url):
|
||||
"""ذخیره کال بک از طریق نرم افزار برای بازگردانی کاربر پس از بازگشت درگاه بانک به پکیج و سپس از پکیج به نرم
|
||||
افزار."""
|
||||
@@ -187,7 +200,10 @@ class BaseBank:
|
||||
def _set_bank_record(self):
|
||||
try:
|
||||
self._bank = Bank.objects.get(
|
||||
Q(Q(reference_number=self.get_reference_number()) | Q(tracking_code=self.get_tracking_code())),
|
||||
Q(
|
||||
Q(reference_number=self.get_reference_number())
|
||||
| Q(tracking_code=self.get_tracking_code())
|
||||
),
|
||||
Q(bank_type=self.get_bank_type()),
|
||||
)
|
||||
logging.debug("Set reference find bank object.")
|
||||
@@ -216,7 +232,10 @@ class BaseBank:
|
||||
return self._transaction_status_text
|
||||
|
||||
def _set_payment_status(self, payment_status):
|
||||
if payment_status == PaymentStatus.RETURN_FROM_BANK and self._bank.status != PaymentStatus.REDIRECT_TO_BANK:
|
||||
if (
|
||||
payment_status == PaymentStatus.RETURN_FROM_BANK
|
||||
and self._bank.status != PaymentStatus.REDIRECT_TO_BANK
|
||||
):
|
||||
logging.debug(
|
||||
"Payment status is not status suitable.",
|
||||
extra={"status": self._bank.status},
|
||||
@@ -247,6 +266,10 @@ class BaseBank:
|
||||
def get_currency(self):
|
||||
return self._currency
|
||||
|
||||
@staticmethod
|
||||
def get_timeout():
|
||||
return settings.BANK_TIMEOUT
|
||||
|
||||
def get_gateway_amount(self):
|
||||
return self._gateway_amount
|
||||
|
||||
@@ -357,8 +380,8 @@ class BaseBank:
|
||||
return redirect_url
|
||||
|
||||
def _get_gateway_callback_url(self):
|
||||
url = reverse(settings.CALLBACK_NAMESPACE)
|
||||
if self.get_request():
|
||||
url = reverse(settings.CALLBACK_NAMESPACE)
|
||||
url_parts = list(parse.urlparse(url))
|
||||
if not (url_parts[0] and url_parts[1]):
|
||||
url = self.get_request().build_absolute_uri(url)
|
||||
@@ -366,5 +389,6 @@ class BaseBank:
|
||||
query.update({"bank_type": self.get_bank_type()})
|
||||
query.update({"identifier": self.identifier})
|
||||
url = append_querystring(url, query)
|
||||
|
||||
else:
|
||||
url = build_full_url(settings.CALLBACK_NAMESPACE)
|
||||
return url
|
||||
|
||||
Reference in New Issue
Block a user