Ruby on rails 条带支付路线对不同的收费按钮收费相同
我正在尝试向我的支付平台添加两个按钮。但即使按下另一个按钮,stripe也会向我收取同样的费用。这是我的尝试,但不起作用。我不确定出了什么问题 收费控制器.rb 看法Ruby on rails 条带支付路线对不同的收费按钮收费相同,ruby-on-rails,stripe-payments,Ruby On Rails,Stripe Payments,我正在尝试向我的支付平台添加两个按钮。但即使按下另一个按钮,stripe也会向我收取同样的费用。这是我的尝试,但不起作用。我不确定出了什么问题 收费控制器.rb 看法 传递给的金额和货币参数(在调用handler.open(…))仅用于显示目的 用于收费的实际金额和货币是您在后端代码发送的的的金额和货币参数中提供的金额和货币 在这种情况下,费用在charges\u controller.rb文件中创建,金额是固定的。如果您想收取不同的金额,则需要随令牌发送一些其他字段,以便您的后端代码可以知道要
传递给的
金额
和货币
参数(在调用handler.open(…)
)仅用于显示目的
用于收费的实际金额和货币是您在后端代码发送的的的金额
和货币
参数中提供的金额和货币
在这种情况下,费用在charges\u controller.rb
文件中创建,金额是固定的。如果您想收取不同的金额,则需要随令牌发送一些其他字段,以便您的后端代码可以知道要收取的金额
除非金额由客户明确设定(例如,如果您接受捐赠),否则您不应依赖客户浏览器提供的金额,因为更改金额非常容易。相反,您可能希望使用一些标识符,您可以在后端代码中使用这些标识符来检索正确的金额。我发现的第一个问题是,对于您使用的两个处理程序
document.getElementById(“chargeForm”).submit()代码>但第二个没有chargeForm1
。我将使用控制器设置金额,上面的金额只是为了确保用户知道他们支付了多少。但就使用两个按钮而言,我是否需要为每个按钮设置一个新的控制器?
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 %>
Rails.application.routes.draw do
resources :charges
root 'pages#index'
get 'pages/about'
get 'pages/contact'
get 'pages/pay'