diff --git a/tpv/templates/tpv/form.html b/tpv/templates/tpv/form.html new file mode 100644 index 0000000..f12ec33 --- /dev/null +++ b/tpv/templates/tpv/form.html @@ -0,0 +1,20 @@ +
+ {% if order.status == 'PEN' %} +
+ {% csrf_token %} + + + + + {% if order.contact_email != '' %} + + {% else %} + + {% endif %} +
+{% endif %} +
diff --git a/tpv/urls.py b/tpv/urls.py index 050c419..05f0495 100644 --- a/tpv/urls.py +++ b/tpv/urls.py @@ -1,5 +1,5 @@ from django.urls import path -from tpv.views import transaction_created, webhook, payment_accepted, payment_rejected +from tpv.views import transaction_created, webhook, payment_accepted, payment_rejected, payment_form app_name = "tpv" @@ -9,4 +9,5 @@ urlpatterns = [ path("transaction//webhook/", webhook, name="webhook"), path("transaction//ok/", payment_accepted, name="ok"), path("transaction//ko/", payment_rejected, name="ko"), + path("transaction//form/", payment_form, name="payment_form"), ] diff --git a/tpv/views.py b/tpv/views.py index 31d4aeb..7db907e 100644 --- a/tpv/views.py +++ b/tpv/views.py @@ -2,6 +2,7 @@ from django.urls import reverse from django.views.decorators.csrf import csrf_exempt from django.shortcuts import render, get_object_or_404, redirect from django.http.response import HttpResponse +from django.views.generic import TemplateView from tpv.forms import UpdateEmailForm from tpv.models import PaymentTransaction @@ -75,3 +76,24 @@ def transaction_created(request, transaction): "redsys_target_url": client.get_target_url(), }, ) + + +class PaymentFormView(TemplateView): + template_name = "tpv/form.html" + + def get_context_data(self, transaction): + transaction = get_object_or_404(PaymentTransaction, hash=transaction) + client = RedsysClient() + parameters = client.get_body_for_transaction(transaction) + target_url = client.get_target_url() + + return { + "order": transaction, + "signature_version": parameters.get("Ds_SignatureVersion"), + "merchant_parameters": parameters.get("Ds_MerchantParameters"), + "signature": parameters.get("Ds_Signature"), + "redsys_target_url": target_url, + } + + +payment_form = PaymentFormView.as_view()