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