私はRailsアプリケーションにStripeを統合しようとしています。私は彼らのウェブサイトでチュートリアルを守り、そのほとんどを働かせました。私の1つの質問は、顧客に請求される価格を動的に変更する方法です。RailsでStripeの料金を動的に変更する方法はありますか?
@amountは500でハードコードされています。@price(new.html.erbまたはコントローラから)を '作成'アクションに渡すにはどうすればよいですか?
def new
@project = Project.find(params[:project_id])
number_of_testers = @project.testers
@price = 30 * number_of_testers
end
def create
# Amount in cents
# @amount = 500
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
あなたは非表示のフォームフィールドを追加することにより、paramsハッシュを経由して@price合格するか、またはあなたがコントローラに新しいアクションでそれを計算してから保存することができますnew.html.erb
<center>
<%= 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: $<%= @price %></span>
</label>
</article>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
data-description="Buy usability testing credits"
data-amount="<%= @price*100 %>"
data-locale="auto"></script>
<% end %>
</center>