Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 条纹&;Rails-安全地将最终金额传递给费用控制器_Ruby On Rails_Ruby_Ruby On Rails 3_Stripe Payments - Fatal编程技术网

Ruby on rails 条纹&;Rails-安全地将最终金额传递给费用控制器

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&

我正在将条带支付集成到一个销售活动门票的网站中

我没有一个购物车的需要,但我提出了一个总结页面用户之前,作出最后的付款

由于我的费用控制器的原因,我想不出传递总数的最佳方法。当然,我可以很容易地找到传递值的方法,但我很想知道其他人认为最安全的方法是什么

因此,通过我所拥有的:

My event show视图具有以下表单,允许用户选择他们想要的票证(一个活动可以有多种票证类型),然后选择数量

<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"}