<script src="https://js.stripe.com/v3/"></script>
<script type="text/javascript">
// Create a Stripe client
var stripe = Stripe('{{ stripe.publishable_key }}');
// Stripe Card
var card;
function initCard() {
// Create an instance of Elements
var elements = stripe.elements();
// Custom styling can be passed to options when creating an Element.
// (Note that this demo uses a wider set of styles than the guide below.)
var style = {
base: {
color: '#32325d',
lineHeight: '24px',
fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
fontSmoothing: 'antialiased',
fontSize: '16px',
'::placeholder': {
color: '#aab7c4'
}
},
invalid: {
color: '#fa755a',
iconColor: '#fa755a'
}
};
// Create an instance of the card Element
card = elements.create('card', {style: style});
// Add an instance of the card Element into the `card-element` <div>
card.mount('#card-element');
// Handle real-time validation errors from the card Element.
card.addEventListener('change', function (event) {
var displayError = document.getElementById('card-errors');
if (event.error) {
displayError.textContent = event.error.message;
} else {
displayError.textContent = '';
}
});
}
function resetCard() {
card.destroy();
initCard();
}
function saveCC(btn) {
var $form = $('#ccForm');
var $btn = $(btn);
$btn.prop('disabled', true);
stripe.createToken(card).then(function(result) {
if (result.error) {
$btn.prop('disabled', false);
// Inform the user if there was an error
var errorElement = document.getElementById('card-errors');
errorElement.textContent = result.error.message;
if (window.ccPromise !== undefined) {
window.ccPromise.resolve(false);
}
} else {
$('#stripe_credit_card_token').val(result.token.id);
$('#stripe_credit_card_last4').val(result.token.card.last4);
$('#stripe_credit_card_brand').val(result.token.card.brand);
$('#stripe_credit_card_exp_month').val(result.token.card.exp_month);
$('#stripe_credit_card_exp_year').val(result.token.card.exp_year);
$('#card-element').addClass('is-valid');
{% if doNotSubmit is defined and doNotSubmit %}
// var ccInfo = '<p class="form-control-static">' +
// '<strong>' + result.token.card.brand + ' </strong> ending in ' + result.token.card.last4 +
// '</p>';
// $('#cc_info').html(ccInfo);
// $('#ccModal').modal('hide');
if (window.ccPromise !== undefined) {
window.ccPromise.resolve(true);
}
{% else %}
$form.submit();
{% endif %}
}
});
}
$(document).on('click', '#save-cc-btn', function() {
saveCC($(this));
});
</script>