jQuery(document).ready(function($) { var $settings = Drupal.settings.booking_stripe; var $stripeForm = $("#" + $settings.form_selector); var handler = StripeCheckout.configure({ key: $settings.pubkey, image: $settings.image, locale: 'auto', token: function(token) { try { //store the returned token into hidden form elements $(':input[name="token_id"]', $stripeForm).val(token.id); $(':input[name="token_email"]', $stripeForm).val(token.email); $(':input[name="token_client_ip"]', $stripeForm).val(token.client_ip); $(':input[name="card_brand"]', $stripeForm).val(token.card.brand); $(':input[name="card_cvc_check"]', $stripeForm).val(token.card.cvc_check); $(':input[name="card_address_zip_check"]', $stripeForm).val(token.card.address_zip_check); $stripeForm.get(0).submit(); } catch(err) { console.log([err]); alert(err.message); } } }); //attempt to update amount for amex cards $('#card_number').focusout(function() { console.log(['Card field lost focus', $(this).attr('class')]); }); $('.form-submit').click(function (e) { //currentForm = $(this).closest('form'); //if (currentForm === undefined) // return; var $settings = Drupal.settings.booking_stripe; var $stripeForm = $("#" + $settings.form_selector); //$description = $(':input[name="description"]', $stripeForm).val(); //console.log([$description]); //description: currentForm.find('input[name="description"]').val(), //email: currentForm.find('input[name="email"]').val(), //amount: currentForm.find('input[name="amount"]').val() * 100, //alert($(':input[name="description"]', $stripeForm)); //set the amount dynamically based on the card brand from the token //this doesn't actually work since card_brand isn't set yet if ($(':input[name="card_brand"]', $stripeForm).val() == 'American Express') { var $amount = $(':input[name="foreign_gross_amount"]', $stripeForm).val() * 100; } else { var $amount = $(':input[name="gross_amount"]', $stripeForm).val() * 100; } handler.open({ name: $settings.name, currency: "aud", description: $(':input[name="description"]', $stripeForm).val(), email: $(':input[name="email"]', $stripeForm).val(), amount: Math.round($amount), zipCode: true, closed: function() { //document.getElementById("booking_stripe_form").submit(); } }); e.preventDefault(); }); // Close Checkout on page navigation $(window).on('popstate', function() { handler.close(); }); });