0

私はレールアプリにStripe.jsを統合しました。アプリは「カードで支払う」ボタンを生成します。私はストライプAPIを呼び出して支払いを受け取るためのコントローラ関数をどのように呼び出すことができるか知りたいと思います。Rails 4アプリのjavascript生成ボタンからコントローラ機能を呼び出す方法は?

show.html.erb:

<div class="col-xs-12"> 
     <div class="btn-group pull-right" role="group" aria-label="..." style="margin-top:10px;"> 
      <%= link_to 'Back to Products', products_path, class: "btn btn-default btn-info" %> 
    <%= button_to 'Pay with Card', 
    <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
     data-key="<%= Rails.configuration.stripe[:publishable_key] %>" 
     data-description="A month's subscription" 
     data-amount= "<%= @shopping_cart.total*100 %>" 
     data-locale="auto"></script> %> 
     <!-- 
    <button type="button" class="btn btn-default btn-success"> 
     <span class="fa fa-shopping-cart"></span> 
     &nbsp;Checkout 
    </button> --> 
     </div> 
    </div> 

shopping_carts_controller.rb

がどのように私はチェックアウトメソッドを呼び出すことができます

def checkout 
    @shopping_cart.process_payment stripe_params 
    redirect_to products_path 
    flash[:notice] = "Succefully made payment." 
end 
?ストライプでのお支払いを充電

+0

私は専門家ではありませんが、[Checkout and Railsの使用](https://stripe.com/docs/checkout/rails)に関する公式文書があります。それはあなたが助けることができる例です –

+0

Stripe.jsはフロントエンドでのみ使用されます。それを使って人のカードをトークン化することができます。トークンをフォームに埋め込み、StripeのAPIを使用して自分のカードを請求し、処理を完了します。 [Checkoutチュートリアル](https://stripe.com/docs/checkout/tutorial)を読み、[RailsCast](http://railscasts.com/episodes/288-billing-with-stripe)をご覧ください。 – mysmallidea

答えて

1

3)ストライプがあなた返しストライプ化するカードの詳細を提出するユーザー

2)からカード情報を取得、次の手順 )によって行われますトークン

4)はストライプcharge API

介してユーザに課金するためのストライプトークンを使用してこれをすることができユーザーがこのフォームを送信すると、ユーザー

<%= form_tag charge_amount_path do %> 
    <article> 
    <% if flash[:error].present? %> 
     <div id="error_explanation"> 
     <p><%= flash[:error] %></p> 
     </div> 
    <% end %> 
    <label class="amount"> 
     <span>Amount: $5.00</span> 
    </label> 
    </article> 

    <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
    data-key="some-key" 
    data-description="A month's subscription" 
    data-amount="500" 
    data-locale="auto"></script> 
<% end %> 

からカード情報を取得するためのビューは、ストライプがあなたにストライプトークンを返し、あなたは電荷を作成するには、このトークンを使用することができます。

は、コントローラのメソッドを持って、これはストライプからこの方法に

def charge_amount 
charge = Stripe::Charge.create({ 
       :amount => 100, 
       :card => params[:stripeToken], 
       :description => "blah-blah, 
       :currency => 'usd' 
       }) 
end 

のparamsは

Parameters: {"utf8"=>"✓", "authenticity_token"=>"rhYPiRCDLQJ4F9/B09TKgiyS11YGvP34hI5/Bi9n2nB9BbiBQXAMZWxdwkjVEkiy5+PJaKMnqraWSeu+a0Fn8Q==", "stripeToken"=>"tok_198sjvLeNQnnrmxRqgbTq12n", "stripeTokenType"=>"card", "stripeEmail"=>"[email protected]"} 
0

のようになりますあなたが必要がありますフォームを送信した後に呼び出されるメソッドになりますCheckoutのHTMLスニペットが<form>タグ内にあり、actionのURLがshopping_carts_controllerに設定されていることを確認してください。

関連する問題