Skip to content

Instantly share code, notes, and snippets.

@ShariqAnsari88
Created December 18, 2022 21:14
Show Gist options
  • Save ShariqAnsari88/4a1a11deb1d45367404baf37dcced36b to your computer and use it in GitHub Desktop.
Save ShariqAnsari88/4a1a11deb1d45367404baf37dcced36b to your computer and use it in GitHub Desktop.
E-Commerce by JS Dev
("use strict");
const stripe = require("stripe")(process.env.STRIPE_KEY);
/**
* order controller
*/
const { createCoreController } = require("@strapi/strapi").factories;
module.exports = createCoreController("api::order.order", ({ strapi }) => ({
async create(ctx) {
const { products } = ctx.request.body;
try {
const lineItems = await Promise.all(
products.map(async (product) => {
const item = await strapi
.service("api::product.product")
.findOne(product.id);
return {
price_data: {
currency: "inr",
product_data: {
name: item.title,
},
unit_amount: Math.round(item.price * 100),
},
quantity: product.attributes.quantity,
};
})
);
const session = await stripe.checkout.sessions.create({
shipping_address_collection: { allowed_countries: ["IN"] },
payment_method_types: ["card"],
mode: "payment",
success_url: process.env.CLIENT_URL + "/success",
cancel_url: process.env.CLIENT_URL + "?success=false",
line_items: lineItems,
});
await strapi
.service("api::order.order")
.create({ data: { products, stripeId: session.id } });
return { stripeSession: session };
} catch (error) {
ctx.response.status = 500;
return { error };
}
},
}));
@RahulD05
Copy link

Don't forget to cross check this component > Category.jsx page.
IMG-20240514-WA0008

@DarkHarsh
Copy link

for those getting error before and after stripe integration in order.js file
use // @ts-ignore above your require statement.
it works.

@professorSergio12
Copy link

If anyone who successfully hosts this website. please message me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment