Это настройка Checkout (без подключения), которая была у меня раньше, и она работала хорошо:
home / обязанности / new. html .erb
<%= form_tag charges_path do %>
<div id="error_explanation">
<% if flash[:error].present? %>
<p><%= flash[:error] %></p>
<% end %>
</div>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
data-description="bishbashbooked payment"
data-amount="700"
data-currency="gbp"
data-locale="auto">
</script>
<% end %>
charge_controller.rb
class ChargesController < ApplicationController
def new
render 'home/charges/new'
end
def create
customer = Stripe::Customer.create(
:email => params[:stripeEmail],
:source => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => 700,
:description => 'bishbashbooked',
:currency => 'gbp',
)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_charge_path
end
end
Во-первых, как бы я изменил это, чтобы оно соответствовало SCA (с новым Checkout), но также, чтобы платеж отправлялся продавцу? подключен аккаунт? Мне нужна кнопка на веб-сайте с надписью «оплатить сейчас», которая перенаправит вас на новую страницу Stripe Checkout. После успешного платежа мне нужно перенаправить меня на указанный c URL.
Я видел из документов, что мне нужно включить это:
session = Stripe::Checkout::Session.create({
payment_method_types: ['card'],
line_items: [{
name: "Cucumber from Roger's Farm",
amount: 200,
currency: 'usd',
quantity: 10,
}],
payment_intent_data: {
application_fee_amount: 200,
},
success_url: 'https://example.com/success',
cancel_url: 'https://example.com/cancel',
}, {stripe_account: @group.stripe_user_id })
И это:
// Initialize Stripe.js with the same connected account ID used when creating
// the Checkout Session.
var stripe = Stripe('pk_test_xxxxxxxxxxxxxxxxxxxxxxxx', {
stripeAccount: <%= @group.stripe_user_id %>
});
stripe.redirectToCheckout({
// Make the id field from the Checkout Session creation API response
// available to this file, so you can provide it as parameter here
// instead of the {{CHECKOUT_SESSION_ID}} placeholder.
sessionId: <%= session.id %>
}).then(function (result) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer
// using `result.error.message`.
});
Эти два бита кода, кажется, все, что мне нужно. Однако я, во-первых, не знаю, куда поместить этот код и, во-вторых, как заставить его работать так, как мне нужно. Где кнопка «оплатить сейчас»? Как клиенты обращаются к Stripe, используя это?
Я знаю, что это может быть отнесено к неопределенному вопросу, но я действительно застрял с этим. Я был бы признателен за любую помощь в этом, поскольку я пытался понять это в течение недели безуспешно.
Спасибо, и, пожалуйста, дайте мне знать, если вам нужна дополнительная информация.