【问题标题】:Rails Stripe Js variable amount checkoutRails Stripe Js 可变金额结账
【发布时间】:2017-07-10 05:14:17
【问题描述】:

据我所知,问题是条带结帐模式没有被调用,因此请求通过我的收费控制器而没有设置 stripeToken 并因此引发源为空错误。

这里是他们的设置教程的链接:https://stripe.com/docs/recipes/variable-amount-checkout

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

这是我的错误: 您为“源”传递了一个空白字符串。您应该从请求中删除“源”参数或提供非空值。

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

参数:

{"utf8"=>"✓", "authenticity_token"=>"long code...", "amount"=>"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 菜鸟,但我看不到 handle.open() 如何打开上面的结帐脚本。 var handle 也没有调用它,所以我在这里缺少什么?

【问题讨论】:

  • 我在我的 Rails 应用程序中遇到了同样的错误。令人抓狂的是,我第一次根据 Stripe 文档设置所有内容时,一切正常。但此后每次都失败了。
  • 您可能想在下面尝试我的答案。如果你能上他们的 IRC 频道,就会有很多很棒的人可以真正帮助调试正在发生的事情。

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


【解决方案1】:

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

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

即使我在这里输入正确,我也不知何故打错了?

所以我是正确的,这是一个模式未显示的问题,正如#stripe 上的乐于助人的人所说,“打开 chrome 开发人员工具并检查控制台以查看是否有任何 javascript 错误”。

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

【讨论】:

    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2019-09-05
    • 1970-01-01
    • 2012-08-09
    • 2015-07-23
    相关资源
    最近更新 更多