2016-08-27 13 views
0

ストライプを実装したばかりで、全体が簡単/真実に見えます。何か不足していますか?私はちょうどnew.html.erbビューと新しいコントローラを作成してアクションを作成しています。ストライプは本当にこのシンプルなのですか、何か間違ったことや何か不足していますか?

マイビュー:

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

<script type="text/javascript"> 
    Stripe.setPublishableKey("pk_test_uZ5i6q4hDYctglEMPYiqLUh5"); 
</script> 

    <div class = 'charge-form'> 
     <span class="payment-errors"></span> 

     <div class="form-group"> 
     <label> 
      <input value="<%= current_user.email if current_user %>" type="hidden" data-stripe="email" > 
     </label> 
     </div> 

     <div class="form-group"> 
     <label> 
      <span>Full name</span><span class = 'small-text'> (e.g. John Smith)</span> 
      <input type="text" size="5" data-stripe="name" class = 'form-field'> 
     </label> 
     </div> 

     <div class="form-group"> 
     <label> 
      <span>Country</span><span class = 'small-text'> (e.g. United States)</span> 
      <input type="text" size="10" data-stripe="address_country" class = 'form-field'> 
     </label> 
     </div> 

     <div class="form-group"> 
     <label> 
      <span>Address</span> 
      <input type="text" size="10" data-stripe="address_line1" class = 'form-field'> 
     </label> 
     </div> 

     <div class="form-group"> 
     <label> 
      <span>Postal Code/Zip Code</span> 
      <input type="text" size="4" data-stripe="address_zip" class = 'form-field'> 
     </label> 
     </div> 

     <div class="form-group"> 
     <label> 
      <span>Card Number</span> 
      <input type="text" size="20" data-stripe="number" class = 'form-field'> 
     </label> 
     </div> 

     <div class="form-group"> 
     <label> 
      <span>Expiration (MM/YY)</span> 
      <input type="text" size="2" data-stripe="exp_month" class ='form-field-expiry'> 
      <span>/</span> 
     <input type="text" size="2" data-stripe="exp_year" class ='form-field-expiry'> 
     </label> 

     </div> 

     <div class="form-group"> 
     <label> 
      <span>CVC</span> 
      <input type="text" size="3" data-stripe="cvc" class = 'form-field'> 
     </label> 
     </div> 

     <input type="submit" class="c-btn-submit-charge" value="Submit Payment"> 
     </div> 

<script> 
    $(function() { 
    var $form = $('#payment-form'); 
    $form.submit(function(event) { 
     // Disable the submit button to prevent repeated clicks: 
     $form.find('.submit').prop('disabled', true); 
     // Request a token from Stripe: 
     Stripe.card.createToken($form, stripeResponseHandler); 
     // Prevent the form from being submitted: 
     return false; 
    }); 
    }); 
    function stripeResponseHandler(status, response) { 
    // Grab the form: 
    var $form = $('#payment-form'); 
    if (response.error) { // Problem! 
     // Show the errors on the form: 
     $form.find('.payment-errors').text(response.error.message); 
     $form.find('.submit').prop('disabled', false); // Re-enable submission 
    } else { // Token was created! 
     // Get the token ID: 
     var token = response.id; 
     // Insert the token ID into the form so it gets submitted to the server: 
     $form.append($('<input type="hidden" name="stripeToken">').val(token)); 
     // Submit the form: 
     $form.get(0).submit(); 
    } 
    }; 
</script> 

マイ料コントローラ:

def new 

    end 


    def create 
    # Amount in cents 
    @amount = 2000 



    # Create the charge on Stripe's servers - this will charge the user's card 
    begin 
     # Get the credit card details submitted by the form 
    customer = Stripe::Customer.create(
     :email => params[:email], 
     :source => params[:stripeToken] 
    ) 

     Stripe::Charge.create(
      :amount => @amount, 
      :currency => 'usd', 
      :customer => customer.id, 
      :description => 'Example charge custom form' 
    ) 

     current_user.subscribed = true 
     current_user.stripe_id = customer.id 
     current_user.expiry_date = Date.today + 90.days 
     current_user.save 


     flash[:success] = "Thank you for subscribing. Your account has been unlocked." 
     redirect_to root_path 

     rescue Stripe::CardError => e 
     flash[:danger] = e.message 
     redirect_to root_path 
    end 


end 
+0

試しましたか?それは私にはうまく見えますが、そうでない場合はテストしていません。 :) – floatingLomas

+0

私はそれを試して、それはテストカードのために働いた!しかし、私は真実のために台無しにしたくない。 –

+0

テストカードが与えられたときに何が行われるかは、ライブカードが与えられたとき(ライブ・シークレット・キーを使用して)行われることです。あなたが心配している部分はありますか? – floatingLomas

答えて

0

あなたがあなたのストライプアカウントでトランザクションまたはサブスクリプションを見ることができるかどうかをチェックするためにされた作業されているかどうかを検証する方法ウェブサイト料金を請求する場合や、契約にサインアップする場合は、Stripeのテストカードを必ず使用してください。

このコードは、背後で何が起こっているのかを隠しているので、とてもシンプルに見える理由です。投稿したコードでは、顧客を作成するときなどにRubyでオブジェクトが作成されますが、Stripe APIにリクエストが送信され、データベースの最後に顧客が作成されます。サブスクリプションを作成するときも同じことが起こります。サブスクリプションオブジェクトがRubyで作成され、ストライプのAPIにリクエストが送信され、エンドのサブスクリプションも作成されます。

関連する問題