2017-02-15 46 views
0

我想添加兩個按鈕到我的支付平臺。但即使按下另一個按鈕,條紋也會給我充電。這是我的嘗試,但它不起作用。我不確定發生了什麼問題。條紋支付路由收費相同的不同充電按鈕

charges_controller.rb

def create 

    # Amount in cents - €1000.00 
    @amount = 100000 

    customer = Stripe::Customer.create(
    :email => params[:stripeEmail], 
    :source => params[:stripeToken] 
) 

    charge = Stripe::Charge.create(
    :customer => customer.id, 
    :amount  => @amount, 
    :description => 'Thanks, on behalf of CMRF', 
    :currency => 'eur' 
) 

rescue Stripe::CardError => e 
    flash[:error] = e.message 
    redirect_to new_charge_path 
end  

查看

<%= form_tag charges_path, id: 'chargeForm' do %> 
      <script src="https://checkout.stripe.com/checkout.js"></script> 
      <%= hidden_field_tag 'stripeToken' %> 
      <%= hidden_field_tag 'stripeEmail' %> 
      <button id="customButton" class="btn btn-large btn-primary">Sponsor a Hole</button> 

      <script> 
      var handler = StripeCheckout.configure({ 
       key: '<%= ENV["PUBLISHABLE_KEY"] %>', 
       token: function(token, args) { 
       document.getElementById("stripeToken").value = token.id; 
       document.getElementById("stripeEmail").value = token.email; 
       document.getElementById("chargeForm").submit(); 
       } 
      }); 

      document.getElementById('customButton').addEventListener('click', function(e) { 
       // Open Checkout with further options 
       handler.open({ 
       name: 'My Company', 
       description: 'Entry (€1000.00)', 
       currency: 'eur', 
       amount: 100000, 
       billingAddress: true, 
       }); 
       e.preventDefault(); 
      }); 
      </script> 
     <% end %> 


<%= form_tag charges_path, id: 'chargeForm1' do %> 
      <script src="https://checkout.stripe.com/checkout.js"></script> 
      <%= hidden_field_tag 'stripeToken' %> 
      <%= hidden_field_tag 'stripeEmail' %> 
      <button id="customButton1" class="btn btn-large btn-success">Enter A Team</button> 

      <script> 
      var handler = StripeCheckout.configure({ 
       key: '<%= ENV["PUBLISHABLE_KEY"] %>', 
       // image: '/assets/my_logo.png', 
       token: function(token, args) { 
       document.getElementById("stripeToken").value = token.id; 
       document.getElementById("stripeEmail").value = token.email; 
       document.getElementById("chargeForm").submit(); 
       } 
      }); 

      document.getElementById('customButton1').addEventListener('click', function(e) { 
       // Open Checkout with further options 
       handler.open({ 
       name: 'My Company', 
       description: 'Sponsor (€200.00)', 
       currency: 'eur', 
       amount: 20000, 
       billingAddress: true, 
       // shippingAddress: true 
       }); 
       e.preventDefault(); 
      }); 
      </script> 
     <% end %> 

的routes.rb

Rails.application.routes.draw do 
    resources :charges 

    root 'pages#index' 
    get 'pages/about' 
    get 'pages/contact' 
    get 'pages/pay' 
+0

我發現的第一個問題是,對於這兩個處理程序,您已經採用了'document.getElementById(「chargeForm」)。submit();'但沒有'chargeForm1'作爲第二個處理程序。 – Sravan

回答

0

你傳遞給Checkout(在調用handler.open(...))的amountcurrency參數用於顯示目的LY。

用於收費的實際金額和幣種是您在後臺代碼發送的amountcurrencycharge creation request參數中提供的金額和幣種。

在這種情況下,費用將在您的charges_controller.rb文件中創建,並且金額是固定的。如果你想收取不同的金額,你需要發送一些其他領域的令牌,以便你的後端代碼可以知道要收取的金額。

除非客戶明確規定金額(例如,如果您接受捐款),否則您不應該依賴客戶瀏覽器提供的金額,因爲這很容易更改。相反,您可能希望使用一些可用於後端代碼的標識符來檢索正確的數量。

+0

我會使用控制器來設置金額,以上金額只是爲了確保用戶知道他們支付多少。但就使用2個按鈕而言,我是否需要爲每個按鈕設置一個新的控制器? – user2026178