Rails 5 - Stripe JS не обновляется после отправки - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть форма оплаты, в которой есть следующий JS для генерации токена полосы.

var form = $( "#new_subscription" );
form.validate();

jQuery(function($) {
  $('#new_subscription').submit(function(event) {
    var $form = $(this);

    $form.find('#formSubmit').prop('disabled', true);

    Stripe.card.createToken($form, stripeResponseHandler);

    return false;
  });
});

function stripeResponseHandler(status, response) {
  var $form = $('#new_subscription');

  if (response.error) {
    // Show the errors on the form
    $form.find('.payment-errors').text(response.error.message);
    $form.find('.payment-errors').removeClass('hidden');
    $form.find('#formSubmit').prop('disabled', false);
  } else {
    $form.find('.payment-errors').addClass('hidden');
    // response contains id and card, which contains additional card details
    var token = response.id;
    // Insert the token into the form so it gets submitted to the server
    $form.append($('<input type="hidden" name="stripe_token" />').val(token));
    // Remove Stripe cc fields
    $("[data-stripe=number]").remove();
    $("[data-stripe=cvc]").remove();
    $("[data-stripe=exp-year]").remove();
    $("[data-stripe=exp-month]").remove();
    // and submit
    $form.get(0).submit();
  }
};

в моем контроллере у меня есть:

if !@subscription.errors.blank?
  @user = User.new(user_params)
  @subscription_item = SubscriptionItem.new(subscription_item_params)
  flash.now[:error] = @subscription.errors[:base][0]
  render :new

Когда я использую Stripe контрольный номер копии 4000000000000341, он выдает правильную ошибку Payment Declinedсообщение в новой форме подписки.А на информационной панели Stripe отображается сбой платежа, связанного с этой картой.

Однако, если я затем введу номер тестовой карты, который должен успешно списать средства (4000000000000077) и отправить, я получу ту же ошибку, что идо.Тестовые сборы на приборной панели показывают, что она все еще пытается использовать ту же карту.

Только после обновления страницы форма будет отправлять правильную карточку.

Я не понимаю, почему моя страница отправляет номер карточки из первой отправки при вводе новой карточки.

...