Ruby on rails 条纹&;Rails-安全地将最终金额传递给费用控制器
我正在将条带支付集成到一个销售活动门票的网站中 我没有一个购物车的需要,但我提出了一个总结页面用户之前,作出最后的付款 由于我的费用控制器的原因,我想不出传递总数的最佳方法。当然,我可以很容易地找到传递值的方法,但我很想知道其他人认为最安全的方法是什么 因此,通过我所拥有的: My event show视图具有以下表单,允许用户选择他们想要的票证(一个活动可以有多种票证类型),然后选择数量Ruby on rails 条纹&;Rails-安全地将最终金额传递给费用控制器,ruby-on-rails,ruby,ruby-on-rails-3,stripe-payments,Ruby On Rails,Ruby,Ruby On Rails 3,Stripe Payments,我正在将条带支付集成到一个销售活动门票的网站中 我没有一个购物车的需要,但我提出了一个总结页面用户之前,作出最后的付款 由于我的费用控制器的原因,我想不出传递总数的最佳方法。当然,我可以很容易地找到传递值的方法,但我很想知道其他人认为最安全的方法是什么 因此,通过我所拥有的: My event show视图具有以下表单,允许用户选择他们想要的票证(一个活动可以有多种票证类型),然后选择数量 <table class="table table-condensed"> <tr&
<table class="table table-condensed">
<tr>
<th>Ticket Type</th>
<th>On Sale Until</th>
<th>Price</th>
<th>Quantity</th>
</tr>
<%= form_tag tickets_path do %>
<% @event.event_tickets.each do |ticket| %>
<tr>
<td><%= ticket.ticket_type_name %></td>
<td><%= ticket.off_sale_date.to_formatted_s(:my_format) %></td>
<td><%= ticket.price %></td>
<td>
<%= select_tag "qty[#{ticket.id}]", "<option>1</option><option>2</option><option>3</option><option>4</option>".html_safe, :class => "input-mini select-mini" %><br>
<%= hidden_field_tag "ticket_id[]", ticket.id %>
</td>
</tr>
<% end %>
</table>
<%= submit_tag 'Buy Tickets', :class => 'btn btn-success' %>
<% end %>
传递的参数如下所示:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"abc123", "qty"=>{"4"=>"3", "5"=>"1"}, "ticket_id"=>["4", "5"], "commit"=>"Buy Tickets", "id"=>"test-with-tickets"}
其中我使用的主要参数是qty散列,即“ticket\u id”=>“qty”
所以,我的下一步是将总数传递给我的费用控制员,但理论上我还需要票证ID和QTY
我可能在这里自己回答这个问题,但我是否应该首先将合计代码提取到一个模型方法中,然后根据“ticket\u id=>“qty”散列从事件/票据和费用/创建操作调用该模型方法,而不是传递总计?如果这是一种更好的方法,我应该如何安全地将该散列从事件/票据摘要传递到费用/创建操作,以便用户不能篡改ID和/或QTY
我希望这一切都有意义 我自己做了一些进一步的阅读;SSL是这个问题的答案吗?我建议添加订单/行项目模型并捕获用户请求的内容(tix、数量等)。这为您提供了在控制器之间传递的单个数字,而用户无法更改数字所指向的内容。更重要的是,它将为您提供一个事务模型,允许您跟踪谁申请了哪些票证以及何时申请,这是一种生成摘要的方便方法。。。这是一个总结总体逻辑的地方。这是有道理的,我本来打算走这条路。您建议我在条带付款成功后标记订单完成,还是将完成的订单复制到新型号?此外,我还需要添加一些逻辑来清除不完整的订单,我无法想象这会太难。是的,这听起来很合理。FWIW,我真的很喜欢状态机gem处理这样的状态转换。
Parameters: {"utf8"=>"✓", "authenticity_token"=>"abc123", "qty"=>{"4"=>"3", "5"=>"1"}, "ticket_id"=>["4", "5"], "commit"=>"Buy Tickets", "id"=>"test-with-tickets"}