Files
php_assessment_2/wp-content/plugins/custom-enhancements/stripe.js
T
2025-08-11 05:58:17 +01:00

67 lines
2.1 KiB
JavaScript

jQuery(function($) {
'use strict';
// Initialize Stripe
var stripe = Stripe(stripe_params.publishableKey);
var elements = stripe.elements();
// Create card element
var cardElement = elements.create('card', {
style: {
base: {
fontSize: '16px',
color: '#424770',
'::placeholder': {
color: '#aab7c4',
},
},
invalid: {
color: '#9e2146',
},
},
});
// Mount card element
cardElement.mount('#stripe-card-element');
// Handle form submission
$('form.checkout').on('checkout_place_order_custom_stripe', function() {
return stripeFormHandler();
});
function stripeFormHandler() {
if ($('#payment_method_custom_stripe').is(':checked')) {
if ($('input[name="stripe_token"]').length) {
return true;
}
stripe.createToken(cardElement).then(function(result) {
if (result.error) {
// Show error to customer
$('.woocommerce-error, .woocommerce-message').remove();
$('form.checkout').prepend('<div class="woocommerce-error">' + result.error.message + '</div>');
$('html, body').animate({
scrollTop: ($('form.checkout').offset().top - 100)
}, 1000);
} else {
// Insert token into form and submit
$('form.checkout').append('<input type="hidden" name="stripe_token" value="' + result.token.id + '" />');
$('form.checkout').submit();
}
});
return false;
}
return true;
}
// Handle card element changes
cardElement.addEventListener('change', function(event) {
var displayError = document.getElementById('card-errors');
if (event.error) {
displayError.textContent = event.error.message;
} else {
displayError.textContent = '';
}
});
});