You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello
in order to use Sripe successfully without - Axios 500 Error the code in- bookingController.js- should change to:
Lines 8- 35 should be:
exports.getCheckoutSession = catchAsync(async (req, res, next) => {
// 1) Get the currently booked tour
const tour = await Tour.findById(req.params.tourId);
// console.log(tour);
Thank you. I can confirm that this approach makes the webhooks work. The most important line for me to change was: const price = session.amount_total / 100;
Hello
in order to use Sripe successfully without - Axios 500 Error the code in- bookingController.js- should change to:
Lines 8- 35 should be:
exports.getCheckoutSession = catchAsync(async (req, res, next) => {
// 1) Get the currently booked tour
const tour = await Tour.findById(req.params.tourId);
// console.log(tour);
// 2) Create checkout session
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],
mode: 'payment', // Added this line
success_url:
${req.protocol}://${req.get('host')}/my-tours?alert=booking
,cancel_url:
${req.protocol}://${req.get('host')}/tour/${tour.slug}
,customer_email: req.user.email,
client_reference_id: req.params.tourId,
line_items: [
{
price_data: {
currency: 'usd',
product_data: {
name:
${tour.name} Tour
,description: tour.summary,
images: [
${req.protocol}://${req.get('host')}/img/tours/${tour.imageCover}
],},
unit_amount: tour.price * 100,
},
quantity: 1,
},
],
})
Lines 51-69 should be:
const createBookingCheckout = async session => {
const tour = session.client_reference_id;
const user = (await User.findOne({ email: session.customer_email })).id;
const price = session.amount_total / 100; // Updated to use amount_total
await Booking.create({ tour, user, price });
};
exports.webhookCheckout = (req, res, next) => {
const signature = req.headers['stripe-signature'];
let event;
try {
event = stripe.webhooks.constructEvent(
req.body,
signature,
process.env.STRIPE_WEBHOOK_SECRET
);
} catch (err) {
return res.status(400).send(
Webhook error: ${err.message}
);}
if (event.type === 'checkout.session.completed')
createBookingCheckout(event.data.object);
res.status(200).json({ received: true });
};
The text was updated successfully, but these errors were encountered: