条纹结账 Rails 收取不同金额
Stripe Checkout with Rails Charging Different Amounts
我正在按照 Stripe 的 rails 指南设置基本结帐。我让它工作了,但一次只需 5 美元。
找不到有关添加其他金额的文档。我想要一个页面有 5 美元、10 美元和 15 美元的结帐选项(我正在创建一个捐赠页面)。
我知道我可以为每个付款金额创建多个控制器,但这似乎有点过分了。任何建议将不胜感激。到目前为止,这是我的代码...
charges_controller.rb:
class ChargesController < ApplicationController
def new
end
def create
# Amount in cents
@amount = 500
customer = Stripe::Customer.create(
:email => 'example@stripe.com',
:card => 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 charges_path
end
end
new.html.erb(收费查看页面):
<%= form_tag charges_path do %>
<article>
<label class="amount">
<span>Amount: .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"></script>
<% end %>
charges.html.erb(布局):
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<%= yield %>
</body>
</html>
stripe.rb(初始化器):
Rails.configuration.stripe = {
:publishable_key => ENV['PUBLISHABLE_KEY'],
:secret_key => ENV['SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
routes.rb:
resources :charges
谢谢! rails 还是个新手,所以我猜这很简单。
如果您将一些单选按钮添加到您的表单中,并从脚本中删除 data-amount
,那么它将使用您表单中的 amount
值。类似于:
<% ["500", "1000", "1500"].each do |amount| %>
<input type="radio" name="amount" value="<%= amount %>" />
<% end %>
显然,您需要使用标签和默认选择来修饰它,但这种方法可以让您从用户那里选择数量。
然后,在您的控制器中,您需要使用传入的金额而不是 @amount
:
创建费用
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => params[:amount],
:description => 'Rails Stripe customer',
:currency => 'usd'
)
我正在按照 Stripe 的 rails 指南设置基本结帐。我让它工作了,但一次只需 5 美元。
找不到有关添加其他金额的文档。我想要一个页面有 5 美元、10 美元和 15 美元的结帐选项(我正在创建一个捐赠页面)。
我知道我可以为每个付款金额创建多个控制器,但这似乎有点过分了。任何建议将不胜感激。到目前为止,这是我的代码...
charges_controller.rb:
class ChargesController < ApplicationController
def new
end
def create
# Amount in cents
@amount = 500
customer = Stripe::Customer.create(
:email => 'example@stripe.com',
:card => 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 charges_path
end
end
new.html.erb(收费查看页面):
<%= form_tag charges_path do %>
<article>
<label class="amount">
<span>Amount: .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"></script>
<% end %>
charges.html.erb(布局):
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<%= yield %>
</body>
</html>
stripe.rb(初始化器):
Rails.configuration.stripe = {
:publishable_key => ENV['PUBLISHABLE_KEY'],
:secret_key => ENV['SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
routes.rb:
resources :charges
谢谢! rails 还是个新手,所以我猜这很简单。
如果您将一些单选按钮添加到您的表单中,并从脚本中删除 data-amount
,那么它将使用您表单中的 amount
值。类似于:
<% ["500", "1000", "1500"].each do |amount| %>
<input type="radio" name="amount" value="<%= amount %>" />
<% end %>
显然,您需要使用标签和默认选择来修饰它,但这种方法可以让您从用户那里选择数量。
然后,在您的控制器中,您需要使用传入的金额而不是 @amount
:
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => params[:amount],
:description => 'Rails Stripe customer',
:currency => 'usd'
)