我正在尝试将 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