diff --git a/.env b/.env index ed782b0..d787838 100644 --- a/.env +++ b/.env @@ -13,7 +13,7 @@ WEBHOOK_SECRET_KEY="whsec_m9u7CFBCY1qWarhxq65CkII6egOBf20K" STRIPE_SECRET_KEY="sk_test_51OhPRdSG6gbAOwcEid1GavJ4FTD0ZuHVTferdvJwKal77RlMtFJGBzL5GjtL0ie8ZJztsGjUWi8DWrnw1pDdDRGS005Hk0ahql" STRIPE_WEBHOOK_SECRET="whsec_dc9b9084fc764c806c8c5c06dd91de1ee809e9c8deab6d56e8e3ef2fc9c30c67" -FRONTEND_URL="http://127.0.0.1:5173" +FRONTEND_URL="https://smellika.com" SEND_EMAIL_FROM="hello@smellika.com" diff --git a/resources/Orders/StripeCheckOutController.js b/resources/Orders/StripeCheckOutController.js index 81f6417..f031fe1 100644 --- a/resources/Orders/StripeCheckOutController.js +++ b/resources/Orders/StripeCheckOutController.js @@ -79,7 +79,7 @@ export const handlePayment = async (req, res) => { shippingInfo: shipping, user: req.user._id, }); - console.log("fffffffff", order, "llllllllll"); + // console.log("fffffffff", order, "llllllllll"); const lineItems = await cart.map((item) => ({ price_data: { currency: "inr", @@ -108,8 +108,8 @@ export const handlePayment = async (req, res) => { // Allow only India for INR transactions }, billing_address_collection: "required", - success_url: "http://localhost:5173/order-complete", // Provide your success URL here - cancel_url: "http://localhost:5173/cart", + success_url: `${process.env.FRONTEND_URL}/order-complete`, // Provide your success URL here + cancel_url: `${process.env.FRONTEND_URL}/cart`, }); // res.json({ sessionId: session.id }); @@ -125,6 +125,7 @@ export const handlePayment = async (req, res) => { export const webhook = async (req, res) => { const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET; + const signature = req.headers["stripe-signature"]; let event; if (webhookSecret) { @@ -142,7 +143,6 @@ export const webhook = async (req, res) => { } if (event.type === "checkout.session.completed") { - // console.log("dddddddddddd", event.data); const findOrder = await Order.findById(event.data.object.metadata?.orderId); findOrder.paypal_payer_id = event.data.object.id; findOrder.paidAt = new Date(event.data.object.created * 1000); @@ -154,20 +154,52 @@ export const webhook = async (req, res) => { } findOrder.orderStatus = "new"; await findOrder.save(); + + // Construct the HTML for the email + const itemRows = findOrder?.orderItems + .map( + (item) => + `${item?.name}${item?.quantity}₹${item?.price}` + ) + .join(""); + + const htmlContent = ` + + Hi ${findOrder?.shippingInfo?.first_Name}, + +

Great news! Your order #${findOrder?.orderID} has been confirmed. Here are the details:

+
+ + + + + + + + + + + ${itemRows} + +
ItemQuantityPrice
+ +

Shipping Address: ${findOrder?.shippingInfo.first_Name} ${findOrder?.shippingInfo.last_Name},${findOrder?.shippingInfo.postalCode}, + ${findOrder?.shippingInfo.street}, + ${findOrder?.shippingInfo.city}, + ${findOrder?.shippingInfo.state}, + ${findOrder?.shippingInfo.country}
Phone number:${findOrder?.shippingInfo.phone_Number}

+

Total: ₹${findOrder.total_amount}

+ +
+ Best regards,
+ Team Smellika`; + + // Send the email await sendEmail({ to: `${event.data.object.customer_email}`, // Change to your recipient - from: `${process.env.SEND_EMAIL_FROM}`, // Change to your verified sender - subject: `Your Order #${findOrder?.orderID} Confirmation`, - html: `

Welcome to Smellika - Let the Shopping Begin!

- Hi ${findOrder?.shippingInfo?.first_Name}, - -

Great news! Your order #${findOrder?.orderID} has been confirmed. Here are the details

-
- Best regards,
- - Team Smellika`, + html: htmlContent, }); // Items: [List of Purchased Items] @@ -184,7 +216,7 @@ export const webhook = async (req, res) => { "---------------------" ); - console.log(`💰 Payment status: ${event.data.object?.payment_status}`); + // console.log(`💰 Payment status: ${event.data.object?.payment_status}`); // Saving the payment details in the database // const payment = await Payment.create({