Created
December 18, 2022 21:14
-
-
Save ShariqAnsari88/4a1a11deb1d45367404baf37dcced36b to your computer and use it in GitHub Desktop.
E-Commerce by JS Dev
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
("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 }; | |
} | |
}, | |
})); |
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
for those getting error before and after stripe integration in order.js file
use // @ts-ignore above your require statement.
it works.