Пользовательское описание для Stripe Payments

У меня возникли проблемы с выяснением того, как отправлять информацию вместе с транзакциями Stripe для заполнения поля «описание» при каждой покупке. По сути, я хочу, чтобы это включало информацию со страницы покупки, на которой находится форма оплаты. У меня есть значение на каждой странице покупки, которое отображает школу, в которую участвует пользователь (‹% = @ pin.school%>). Я хочу иметь возможность использовать это значение в каждом описании платежа, чтобы знать, в какую школу участвовал пользователь. Я чувствую, что я и мое приложение не понимаем, какие методы использовать, чтобы это произошло между моей страницей формы и моим контроллером расходов, который фактически обрабатывает отправленные формы и отправляет их в 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>

person user2130264    schedule 04.03.2013    source источник


Ответы (1)


вам нужно обновиться до версии 2

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
person chris_r    schedule 24.08.2013