app/views/stripe_saas/subscriptions/_card.html.erb
<% content_for :stripe_saas do %>
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<% end %>
<%= render 'card_form', url: url, title: title %>
<script type="text/javascript">
Stripe.setPublishableKey("<%= StripeSaas.stripe_publishable_key %>");
var stripeResponseHandler = function (status, response) {
if (response.error) {
// show the errors on the form
$(".payment-errors").text(response.error.message).show();
$(".submit-button").removeAttr("disabled");
} else {
var $form = $("#payment-form");
// token contains id, last4, and card type
// insert the token into the form so it gets submitted to the server
$cc_token_field = $('<input type="hidden" name="subscription[credit_card_token]" />').val(response.id);
$last_four_field = $('<input type="hidden" name="subscription[last_four]" />').val(response.card.last4);
$card_brand = $('<input type="hidden" name="subscription[card_type]" />').val(response.card.brand);
//
$form.append($cc_token_field, $last_four_field, $card_brand);
$form.get(0).submit();
}
}
$(document).ready(function() {
// By default, don't show errors.
$(".payment-errors").hide()
$("#payment-form").submit(function(event) {
// disable the submit button to prevent repeated clicks
$('.submit-button').attr("disabled", "disabled");
Stripe.createToken({
number: $('.card-number').val(),
cvc: $('.card-cvc').val(),
exp_month: $('.card-expiry-month').val(),
exp_year: $('.card-expiry-year').val()
}, stripeResponseHandler);
// prevent the form from submitting with the default action
event.preventDefault();
});
});
</script>