Rails条纹Js可变金额结帐

时间:2017-02-20 19:29:22

标签: javascript jquery ruby-on-rails stripe-payments

我所理解的最好的问题是条带检出模式没有被调用,因此请求进入我的充电控制器而没有设置stripeToken,因此抛出一个源是空的错误。

以下是其设置教程的链接:https://stripe.com/docs/recipes/variable-amount-checkout

所以我在阅读时完全复制/粘贴了他们的代码,只是简单地修改了最小数量。我遇到了api-key的错误,但是我遇到了这个问题。

以下是我的错误: 您已为'source'传递了空白字符串。您应该从请求中删除“source”参数或提供非空值。

Stripe::Charge.create(
      :amount => @amount,
      :currency => 'usd',
      :source => params[:stripeToken],

参数:

{“utf8”=>“✓”,“authenticity_token”=>“长代码...”,“金额”=>“6”,“stripeToken”=>“”}

模式在此错误之前根本不出现。我怀疑结账模式js只是不被捐赠按钮事件处理程序调用。

<script src="https://checkout.stripe.com/checkout.js"></script>

<script>
var handler = StripeCheckout.configure({
  key: '<%= Rails.configuration.stripe[:publishable_key] %>',
  locale: 'auto',
  name: 'Ragnar\'s Redoubt',
  description: 'One-time donation',
  token: function(token) {
    $('input#stripeToken').val(token.id);
    $('form').submit();
  }
});

$('#donateButton').on('click', function(e) {
  e.preventDefault();

  $('#error_explanation').html('');

  var amount = $('input#amount').val();
  amount = amount.replace(/\$/g, '').replace(/\,/g, '')

  amount = parseFloat(amount);

  if (isNaN(amount)) {
    $('#error_explanation').html('<p>Please enter a valid amount in USD ($).</p>');
  }
  else if (amount < 1.00) {
    $('#error_explanation').html('<p>Donation amount must be at least $1.</p>');
  }
  else {
    amount = amount * 100; // Needs to be an integer!
    handler.open({
      amount: Math.round(amount)
    })
  }
});

// Close Checkout on page navigation
$(window).on('popstate', function() {
  handler.close();
});
</script>

我是一个javascript noob,但我没有看到handle.open()如何打开上面的结帐脚本。 var handle也没有调用它,所以我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

冒着回答我自己的菜鸟问题的风险......

我从freenode上的#stripe irc频道得到了很好的帮助。

即使我在这里输入正确,我还是错过了输入错误?

所以我是对的,这是一个没有出现问题的模式,正如#stripe上有用的人说的那样,“打开chrome开发人员工具并检查控制台,看看是否有任何javascript错误”。

有,它直接导致我拼写错误。所以+1 #stripe,+1 chrome工具。

相关问题