1

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

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

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

编辑:我已经验证我的代码可以在另一个应用程序中使用。我现在认为问题在于在前端使用Vue 。看起来 Vue 拒绝了 Stripe 的 JS 在按下模式触发按钮时自动运行和提交表单的机会。

**编辑 #2:放弃并使用 Elements 而不是结帐创建自定义 Vue 表单。如果其他人觉得它有用,本教程会指导我。

我的代码如下:

# 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
4

0 回答 0