2015-12-11 28 views
0

我正在使用條紋api,並一直運行錯誤「必須提供源代碼或客戶」。我相信問題是令牌沒有被創建,因此不會傳遞給控制器​​,因爲它不會顯示在參數中。 下面的代碼:條紋Api不創建令牌導軌4

<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 

回答

0

想通了。我沒有正確設置可發佈的密鑰!

0

如果您未創建令牌,請仔細檢查您的可發佈密鑰是否正確設置?

+0

哦,太棒了,你已經知道了!這個問題寫得很好。 :] – brookr