Stripe Api不创建令牌Rails 4

时间:2015-12-11 05:48:57

标签: ruby-on-rails-4 stripe-payments

我正在使用条带api并且我一直遇到错误"必须提供来源或客户"。我认为问题是令牌没有被创建,因此没有传递给控制器​​,因为它没有出现在参数中。 这是代码:

    <script type="text/javascript">

    function stripeResponseHandler(status, response) {
      var $form = $('#payment-form');

      if (response.error) {
          $form.find('.payment-errors').text(response.error.message);
          $form.find('#paySubmit').prop('disabled', false);
      } else {
          var token = response.id;

          $form.append($('<input type="hidden" name="stripeToken" />').val(token));

          $form.get(0).submit();
      };
  };

    jQuery(function($) {
      $('#payment-form').submit(function(event) {

          var $form = $(this);

          $form.find('#paySubmit').prop('disabled', true);

          Stripe.card.createToken($form, stripeResponseHandler);

          return false;
      });
    });

    </script>


<div class="checkout">
  <h1>Order Barbell Balm</h1>

  <form action="/charges" method=POST id="payment-form">
      <span class="payment-errors"></span>
      <ul>
          <li class="form">
              <label>
                  Quantity
                  <input type="text" size="3" name="amount" />
              </label>
          </li>

          <li class="form">
              <label>
                  Card Number
                  <input type="text" size="20" data-stripe="number" />
              </label>
          </li>

          <li class="form">
              <label>
                  CVC
                  <input type="text" size="4" data-stripe="cvc" />
              </label>
          </li>

          <li class="form">
              <label>
                  Expiration (MM/YYYY)
                  <input type="text" size="2" data-stripe="exp-month" />
                  <input type="text" size="4" date-stripe="exp-year" />
              </label>
          </li>
          <li class="form">
              <input type="submit" class="button" id="paySubmit" />
          </li>
      </ul>
  </form>
</div>

这是控制器:

class ChargesController < ApplicationController

def new
end

def create
    amount = order_params[:amount] * 10 * 100

    token = order_params[:stripeToken]

    charge = Stripe::Charge.create(
        :amount => amount,
        :currency => 'usd',
        :source => token,
        :description => 'Barbell Balm'
    )

    rescue Stripe::CardError => e
end

protected

    def order_params
        params.permit(:stripeToken, :amount) 
    end
end

2 个答案:

答案 0 :(得分:0)

想出来。我没有正确设置我的可发布密钥!

答案 1 :(得分:0)

如果您没有创建令牌,请仔细检查您是否正确设置了可发布的密钥?