import logging from urllib.parse import unquote from django.http import Http404 from django.shortcuts import render from django.views.decorators.csrf import csrf_exempt from azbankgateways.bankfactories import BankFactory from azbankgateways.exceptions import AZBankGatewaysException @csrf_exempt def callback_view(request): bank_type = request.GET.get("bank_type", None) identifier = request.GET.get("identifier", None) if not bank_type: logging.critical("Bank type is required. but it doesnt send.") raise Http404 factory = BankFactory() bank = factory.create(bank_type, identifier=identifier) try: bank.verify_from_gateway(request) except AZBankGatewaysException: logging.exception("Verify from gateway failed.", stack_info=True) return bank.redirect_client_callback() @csrf_exempt def go_to_bank_gateway(request): context = {"params": {}} for key, value in request.GET.items(): if key == "url" or key == "method": context[key] = unquote(value) else: context["params"][key] = unquote(value) return render(request, "azbankgateways/redirect_to_bank.html", context=context)