2013-03-04 408 views
0

我在計算如何隨條帶事務一起發送信息以填充每個購買的「description」字段時遇到了一些問題。基本上,我希望這包括付款表單所在的購買頁面中的信息。每個購買頁面上都有一個值,顯示用戶參與的學校(<%= @ pin.school%>)。我希望能夠將相同的價值拉入每個付款說明中,以便我知道用戶參與了哪個學校。我覺得我有我自己和我的應用程序混淆了在我的表單頁面和我的收費控制器之間使用哪種方法實現處理表單提交併將它們發送到Stripe的方法。Stripe支付的自定義說明

「罪名」 控制器:

class ChargesController < ApplicationController 

    def new 
    end 

    def create 
    Stripe.api_key = "sk_test_ESb8aYrhEOcrNXr3940KehVM" 
    # Amount in cents 
    @amount = 500 
    @school = @pin.school 

    charge = Stripe::Charge.create(
     :amount => @amount, 
     :currency => "usd", 
     :card => params[:stripeToken], 
     :description => @school 
    ) 
    end 
end 

付款頁面:

<head> 
    <script type="text/javascript" src="https://js.stripe.com/v1/"></script> 
    <script type="text/javascript"> 
    // this identifies your website in the createToken call below 
    Stripe.setPublishableKey('pk_test_j8hulWlnmbug4H14Q0emQixf'); 

    function stripeResponseHandler(status, response) { 
     if (response.error) { 
     // Show the errors on the form 
     $('.payment-errors').text(response.error.message); 
     $('.submit-button').prop('disabled', false); 
     } else { 
     var $form = $('#payment-form'); 
     // token contains id, last4, and card type 
     var token = response.id; 
     var email = $("#email").val(); 
     // Insert the token into the form so it gets submitted to the server 
     $form.append($('<input type="hidden" name="stripeToken" />').val(token)); 
     // and submit 
     $form.get(0).submit(); 
     } 
    } 

    $(function() { 
     $('#payment-form').submit(function(event) { 
     // Disable the submit button to prevent repeated clicks 
     $('.submit-button').prop('disabled', true); 
     var email = $("#email").val(); 

     Stripe.createToken({ 
      name: $('.card-name').val(), 
      number: $('.card-number').val(), 
      cvc: $('.card-cvc').val(), 
      exp_month: $('.card-expiry-month').val(), 
      exp_year: $('.card-expiry-year').val() 
     }, stripeResponseHandler); 

     // Prevent the form from submitting with the default action 
     return false; 
     }); 
    }); 
    </script> 
</head> 
<div class="row"> 
    <div class="span10 offset1"> 
     <div class="well"> 
      Level 1 
      <div class="row"> 
      <div class="span4"> 
       <p> 
       Level 2 
       </p> 
       <p> 
       <%= image_tag @pin.image %> 
       </p> 
       <p> 
       <% if current_user == @pin.user %> 
       <%= link_to 'Edit', edit_pin_path(@pin) %> | 
       <% end %> 
       <%= link_to 'Back', pins_path %> 
       </p> 
       </div> 
      <div class="span4">Level 3 
       <h1> 
        <%= @pin.user.name %> 
       </h1> 
       <p> 
        <b>School:</b> 
        <%= @pin.school %> 
       </p> 
       <p> 
        <b>My Story:</b> 
        <%= @pin.description %> 
       </p> 

       <p> 
        <b>Starting Balance:</b> 
        <%= @pin.loan_orig %> 
       </p> 
       <p> 
        <b>Current Balance:</b> 
        <%= @pin.loan_cur %> 
       </p> 
       <p> 
        <b>Progress:</b> 
       </p> 
       <div class="progress progress-success progress-striped"> 
        <div class="bar" style="width: 40%"></div> 
       </div> 
       <p> 
        <b>Share this profile:</b> 
        <%= request.url %> 
       </p> 


     <!--Start Stripe Form --> 
      </div> 
      <div class="row">  
      <div class="span10 offset1"> 
        <span class="payment-errors"></span> 
         <form action="/charges" method="POST" id="payment-form"class="form-stacked"> 

          <p class="form-label">Email Address:</p> 
            <input class="text" id="email" spellcheck="false"></input> 


         <div class="form-row" "pull-left"> 
          <label> 
           <span>Name</span> 
           <input type="text" size="20" autocomplete="off" class="card-name"/> 
          </label> 
          </div> 
          <div class="form-row" "pull-left"> 
          <label> 
           <span>Card Number</span> 
           <input type="text" size="20" autocomplete="off" class="card-number"/> 
          </label> 
          </div> 

          <div class="form-row" "pull-left"> 
          <label> 
           <span>Security Code (CVC)</span> 
           <input type="text" size="4" autocomplete="off" class="card-cvc"/> 
          </label> 
          </div> 
         <div class="form-row" "pull-right"> 
          <label>Expiry Date</label> 
           <select class="card-expiry-month"> 
           <option selected="selected" value="01">01</option> 
           <option value="02">02</option> 
           <option value="03">03</option> 
           <option value="04">04</option> 
           <option value="05">05</option> 
           <option value="06">06</option> 
           <option value="07">07</option> 
           <option value="08">08</option> 
           <option value="09">09</option> 
           <option value="10">10</option> 
           <option value="11">11</option> 
           <option value="12">12</option> 
          </select> 
         </div> 
          <div class="form-row" "pull-right"> 
          <select class="card-expiry-year"> 
           <option selected="selected" value="2013">2013</option> 
           <option value="2014">2014</option> 
           <option value="2015">2015</option> 
           <option value="2016">2016</option> 
           <option value="2017">2017</option> 
           <option value="2018">2018</option> 
           <option value="2019">2019</option> 
           <option value="2020">2020</option> 
           <option value="2021">2021</option> 
           <option value="2022">2022</option> 
           <option value="2023">2023</option> 
           <option value="2024">2024</option> 
           <option value="2025">2025</option> 
           <option value="2026">2026</option> 
           <option value="2027">2027</option> 
           <option value="2028">2028</option> 
           <option value="2029">2029</option> 
           <option value="2030">2030</option> 
           <option value="2031">2031</option> 
           <option value="2032">2032</option> 
           <option value="2033">2033</option> 
           <option value="2034">2034</option> 
           <option value="2035">2035</option> 
           <option value="2036">2036</option> 
           <option value="2037">2037</option> 
           <option value="2038">2038</option> 
           </select> 
          </div> 
      <button type="submit" class="btn btn-success">Submit Payment</button> 
         </form> 
       <!--End Stripe Form --> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

回答

1

您需要更新到第2版

<script type="text/javascript" src="https://js.stripe.com/v2/"></script> 
+0

如果這樣的作品,你是完全冷靜。 – 2017-07-11 18:53:18