{% extends "mnfapp/base.html" %} {% load static %} {% block content %} <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Checkout</title> <script src="https://js.stripe.com/v3/"></script> <!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <!-- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> --> <style> .checkout-container{ display: grid; grid-template-columns: 50% 50%; } .checkout-content{ margin: 10px; padding: 10px; } </style> </head> <button style="color: blue;background-color: transparent; border: 0; text-decoration: underline;" onclick="window.history.back()"> Back To Payment</button> <h1 style="background-color: black; color: white; padding:0.2em 0em 0.3em 0.3em ; width: 100vw;">Checkout</h1> <div class="checkout-container"> <div> <div class="checkout-content" style="border: solid black 1px;"> <form action="{% url 'card'%}" method="post" id='payment-form'> <h2 style="background-color: black; color: white; padding:0.2em 0em 0.3em 0.3em ;">Payment</h2> {%csrf_token%} <div style="padding-left: 0.3em;"> <h3>Pay Using Card</h3> <input type="hidden" name="payment_intent_id" value='{{pid}}'> <input type="hidden" name="subPlan" value='{{subPlan}}'> <div id="card-element" style="margin-top: 4vh; display: grid; grid-template-columns: auto;"> </div> <div id="card-errors" role="alert"></div> <button id="submit-button" style="width: 10vw; margin-top: 2em; background-color: blue; color: white;padding: 0.3em;border: solid blue 1px">PAY NOW</button> </div> </form> </div> </div> <div class="checkout-content" style="border: solid black 1px;"> <h2 style="background-color: black; color: white; padding:0.2em 0em 0.3em 0.3em ;">Order Summary</h2> <div style="display: grid; grid-template-columns: auto auto; margin-left: 0.5em;font-size: 1.4em;"> <span style="text-align: left;">Amount To Be Paid</span> <span style="text-align: left;">$ {{amount}} USD</span> <span style="text-align: left;">Subscription</span> <span style="text-align: left;">{{subPlan}}</span> <span style="text-align: left;">Auto renewal</span> {% if subPlan != Life%} <span>Yes</span> {%else%} <span>No</span> {%endif%} </div> </div> </div> </div> </div> <script> function card(stripe_publishable_key, customer_email){ document.addEventListener('DOMContentLoaded', function(event){ var stripe = Stripe(stripe_publishable_key); var elements = stripe.elements(); var style = { base: { color: "#32325d", fontFamily: '"Helvetica Neue", Helvetica, sans-serif', fontSmoothing: "antialiased", fontSize: "16px", "::placeholder": { color: "#aab7c4" } }, invalid: { color: "#fa755a", iconColor: "#fa755a" } }; var card = elements.create("card", { style: style }); card.mount("#card-element"); card.addEventListener('change', function(event){ var displayError = document.getElementById('card-errors'); if(event.error){ displayError.textContent = event.error.message; }else{ displayError.textContent = ''; } }) var form = document.getElementById('payment-form'); form.addEventListener('submit', function(event){ event.preventDefault(); stripe.createToken(card).then(function(result){ if(result.error){ var errorElement = document.getElementById('card-errors'); errorElement.textContent = result.error.message; }else{ stripe.createPaymentMethod({ type:'card', card:card, billing_details:{ email:'{{user.email}}', }, }).then(function(payment_method_result){ if(payment_method_result.error){ var errorElement = document.getElementById('card-errors'); errorElement.textContent = payment_method_result.error.message; }else{ var form = document.getElementById('payment-form'); var hiddenInput = document.createElement('input'); // var hiddenInput2 = document.createElement('input'); // hiddenInput2.setAttribute('type','hidden'); // hiddenInput2.setAttribute('name','payment_intent_id'); // hiddenInput2.setAttribute('value',payment_intent_result.paymentIntent.id); // form.appendChild(hiddenInput2); hiddenInput.setAttribute('type','hidden'); hiddenInput.setAttribute('name','payment_method_id'); hiddenInput.setAttribute('value',payment_method_result.paymentMethod.id); alert(payment_method_result.paymentMethod.id) form.appendChild(hiddenInput); form.submit(); } }) } }) }) }) } </script> <script> card('pk_test_51JT8ahSF9vzGWngg9ik0jueTIilHhCQomixBFOiNzCuo4Wwc5oRm73d05vdcboMgNwhyNcNTa2si8idqbB5msvwe006q3S96tM', '{{user.email}}') // card('pk_live_51JT8ahSF9vzGWngg4N8fwhTPk5jq8fqBFdokqSMe7AVaOvH6BdyTwAfAoY79qkeJTFA0OdT5qkAk2FCNWCu6W9l000STNnHa7H', '{{user.email}}') </script> {%endblock%}