Rails Stripe Checkout:卡片模态未打开,stripeToken null

时间:2018-04-19 21:09:59

标签: ruby-on-rails vue.js stripe-payments stripe.js

我正在尝试将Stripe付款添加到我的Rails应用。

我完全按照他们的Rails Checkout Guide指南,但结帐模式没有弹出来收集卡信息,因此在尝试向客户收费时,返回的卡令牌为空。

我无法弄清楚我做错了什么。你能帮忙吗?

编辑:我已经验证我的代码可以在其他应用中运行。我现在认为问题出在前端使用 Vue 。似乎Vue拒绝Stripe的JS有机会在按下模态触发按钮时自动运行并提交表单。

**编辑#2:放弃并使用Elements而不是结帐创建自定义的Vue表单。 This tutorial引导我,如果其他人发现它有用。

我的代码如下:

# app/views/charges/new.html.erb

<%= form_tag charges_path do %>
<article>
    <% if flash[:error].present? %>
    <div id="error_explanation">
        <p><%= flash[:error] %></p>
    </div>
    <% end %>
    <label class="amount">
    <span>Amount: $5.00</span>
    </label>
</article>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
    data-description="A month's subscription"
    data-amount="500"
    data-locale="auto"></script>
<% end %>

# app/controllers/charges_controller.rb

def create
    # Amount in cents
    @amount = 500
    puts "token = "
    puts params[:stripeToken]
    customer = Stripe::Customer.create(
      :email => params[:stripeEmail],
      :source  => params[:stripeToken]
    )

    charge = Stripe::Charge.create(
      :customer    => customer.id,
      :amount      => @amount,
      :description => 'Rails Stripe customer',
      :currency    => 'usd'
    )

  rescue Stripe::CardError => e
    flash[:error] = e.message
    redirect_to new_charge_path
end

0 个答案:

没有答案