条纹支付路线为不同的充电按钮充电

时间:2017-02-15 04:57:30

标签: ruby-on-rails stripe-payments

我正在尝试向我的付款平台添加两个按钮。但即使按下另一个按钮,条纹也会向我收取相同的金额。这是我的尝试,但它不起作用。我不确定出了什么问题。

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'

1 个答案:

答案 0 :(得分:0)

您传递给Checkoutamountcurrency参数(在handler.open(...)的调用中)仅用于显示目的。

用于收费的实际金额和币种是您在后端代码发送的charge creation requestamountcurrency参数中提供的金额和货币。

在这种情况下,将在charges_controller.rb文件中创建费用,并且金额已修复。如果您想要收取不同的金额,您需要发送一些其他字段以及令牌,以便您的后端代码可以知道要收取的金额。

除非客户明确设定金额(例如,如果您接受捐款),否则您不应该依赖客户浏览器提供的金额,因为它很容易更改它。相反,您可能希望使用一些可在后端代码中使用的标识符来检索正确的数量。