69 lines
2.1 KiB
JavaScript
69 lines
2.1 KiB
JavaScript
|
var stripe = Stripe('{{ PINAX_STRIPE_PUBLIC_KEY }}');
|
||
|
var elements = stripe.elements();
|
||
|
|
||
|
function stripeify(elementId) {
|
||
|
var element = elements.create(elementId);
|
||
|
element.mount('#' + elementId);
|
||
|
|
||
|
var htmlElement = document.getElementById(elementId);
|
||
|
var errors = elementId + "-errors";
|
||
|
htmlElement.insertAdjacentHTML("afterend", "<div id='" + errors + "' role='alert' class='help-block'></div>");
|
||
|
var displayError = document.getElementById(errors);
|
||
|
|
||
|
//Handle real-time validation errors from the card Element.
|
||
|
element.addEventListener('change', function(event) {
|
||
|
toggleErrorMessage(displayError, event.error);
|
||
|
});
|
||
|
|
||
|
// Create a token or display an error when the form is submitted.
|
||
|
var paymentForm = document.getElementById('payment-form');
|
||
|
paymentForm.addEventListener('submit', function(event) {
|
||
|
event.preventDefault();
|
||
|
|
||
|
stripe.createToken(element).then(function(result) {
|
||
|
if (result.error) {
|
||
|
// Inform the user if there was an error
|
||
|
toggleErrorMessage(displayError, result.error);
|
||
|
} else {
|
||
|
// Send the token to your server
|
||
|
stripeTokenHandler(result.token);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function toggleErrorMessage(errorElement, maybeError) {
|
||
|
errorClass = inputErrorClassName();
|
||
|
if (maybeError) {
|
||
|
errorElement.textContent = maybeError.message;
|
||
|
errorElement.parentNode.classList.add(errorClass);
|
||
|
} else {
|
||
|
errorElement.textContent = '';
|
||
|
errorElement.parentNode.classList.remove(errorClass);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
function inputErrorClassName() {
|
||
|
return {% block form_control_error_class %}"has-error"{% endblock %};
|
||
|
}
|
||
|
|
||
|
|
||
|
function stripeTokenHandler(token) {
|
||
|
// Insert the token ID into the form so it gets submitted to the server
|
||
|
|
||
|
var form = document.getElementById('payment-form');
|
||
|
tokenHolder = form.getElementsByClassName('registrasion-stripe-token')[0];
|
||
|
inputId = tokenHolder.dataset.inputId;
|
||
|
|
||
|
var hiddenInput = document.createElement('input');
|
||
|
hiddenInput.setAttribute('type', 'hidden');
|
||
|
hiddenInput.setAttribute('name', inputId);
|
||
|
hiddenInput.setAttribute('value', token.id);
|
||
|
|
||
|
tokenHolder.appendChild(hiddenInput);
|
||
|
|
||
|
// Submit the form
|
||
|
form.submit();
|
||
|
}
|