So I am working on a web app and am a little confused... I am trying to change the payment status of a booking after the customer paid successfully over stripe checkout. Basically, change booking.paid to true after the checkout is successful. I tried some things but I seem to be stuck. Thank you for any help :)
Here is my checkout controller:
class CheckoutController < ApplicationController
def create
product = Listing.find(params[:listing_id])
booking = Booking.find(params[:id])
duration = (booking.end_date - booking.start_date).to_i 1
@session = Stripe::Checkout::Session.create({
payment_method_types: ['card'],
line_items: [{
name: product.name,
amount: product.price * 100,
currency: "gbp",
quantity: duration
}],
mode: 'payment',
success_url: bookings_url,
cancel_url: bookings_url
})
respond_to do |format|
format.js
end
end
end
CodePudding user response:
I recommend leveraging Stripe Webhooks to inform your internal system when a Checkout Session succeeds. You’ll want to listen for event, checkout.session.completed
.
Here’s a helpful guide that walks through fulfilling orders after a customer pays with Stripe Checkout.