У меня есть форма с переключателями, чтобы выбрать вариант для суммы, которую нужно пожертвовать.Пожертвования на полосе с рельсами
Это выглядит следующим образом:
<tr>
<td><input type="radio" name="amount" value="10"><span>$10</span></td>
<td><input class="awk" type="radio" name="amount" value="25"><span>$25</span></td>
</tr>
<tr>
<td><input type="radio" name="amount" value="50"><span>$50</span></td>
<td><input type="radio" name="amount" value="100"><span>$100</span></td>
</tr>
Там есть кнопка оплаты, который открывает полосы платежный шлюз.
для формы у меня есть это:
<%= 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">Buy Now</button>
<script>
var handler = StripeCheckout.configure({
key: 'foo',
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('customButton').addEventListener('click', function(e) {
// Open Checkout with further options
handler.open({
name: 'My Company',
description: 'Product ($60.00)',
amount: (100 * $('input[name=amount]:checked', '#stripe_donate').val()),
shippingAddress: false
});
e.preventDefault();
});
</script>
<% end %>
Это загружает полоса модальных правильно отображать правильную сумму на кнопку оплаты труда, но как я могу сказать РЕЛЬСЫ, сколько для зарядки клиента? Stripe не заряжается $ 5,00 независимо от того, что из-за код рельсов контроллера:
class ChargesController < ApplicationController
def new
end
def create
# Amount in cents
@amount = 500
customer = Stripe::Customer.create(
:email => '[email protected]',
:card => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => @amount,
:description => 'Rails Stripe customer',
:currency => 'usd'
)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to charges_path
end
end
Так как я говорю рельсам в контроллере, при котором необходимо @amount быть установлено в значение, полученном от страницы? Могу ли я просто пропустить маршрут рельсов и сделать это с помощью чистого JS?
бы это было возможным просто использовать полосы HTML attribuets код и изменить данные-количество с JQuery? – Peege151
Checkout.js создает только токены. Вы должны получить сумму на свой сервер, чтобы взимать плату. Если вы извлекаете это из атрибута суммы данных или из элемента ввода, это не имеет большого значения, если ваш сервер получает сумму и токен. –
Я попытался реализовать ваш код выше, но получил ошибку: missing required param 'amount'. как-то ... где (по ссылке на мой код) я должен поставить ваш код выше? – Peege151