const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY); class StripeService { static async createCheckoutSession({ item_name, total, return_url, metadata = {}, }) { try { const sessionConfig = { line_items: [ { price_data: { currency: "usd", product_data: { name: item_name, }, unit_amount: total * 100, }, quantity: 1, }, ], mode: "payment", ui_mode: "embedded", return_url: return_url, metadata: metadata, }; const session = await stripe.checkout.sessions.create(sessionConfig); return session; } catch (error) { console.error("Error creating checkout session:", error); throw error; } } static async getCheckoutSession(sessionId) { try { return await stripe.checkout.sessions.retrieve(sessionId); } catch (error) { console.error("Error retrieving checkout session:", error); throw error; } } // static async createConnectedAccount({ email, country = "US" }) { // try { // const account = await stripe.accounts.create({ // type: "standard", // email, // country, // controller: { // stripe_dashboard: { // type: "full", // }, // }, // capabilities: { // transfers: { requested: true }, // }, // }); // return account; // } catch (error) { // console.error("Error creating connected account:", error); // throw error; // } // } // static async createAccountLink(accountId, refreshUrl, returnUrl) { // try { // const accountLink = await stripe.accountLinks.create({ // account: accountId, // refresh_url: refreshUrl, // return_url: returnUrl, // type: "account_onboarding", // }); // return accountLink; // } catch (error) { // console.error("Error creating account link:", error); // throw error; // } // } // static async getAccountStatus(accountId) { // try { // const account = await stripe.accounts.retrieve(accountId); // return { // id: account.id, // details_submitted: account.details_submitted, // payouts_enabled: account.payouts_enabled, // capabilities: account.capabilities, // requirements: account.requirements, // }; // } catch (error) { // console.error("Error retrieving account status:", error); // throw error; // } // } // static async createPaymentIntent({ // amount, // currency = "usd", // connectedAccountId, // applicationFeeAmount, // metadata = {}, // }) { // try { // const paymentIntent = await stripe.paymentIntents.create({ // amount, // currency, // transfer_data: { // destination: connectedAccountId, // }, // application_fee_amount: applicationFeeAmount, // metadata, // automatic_payment_methods: { // enabled: true, // }, // }); // return paymentIntent; // } catch (error) { // console.error("Error creating payment intent:", error); // throw error; // } // } // static async confirmPaymentIntent(paymentIntentId, paymentMethodId) { // try { // const paymentIntent = await stripe.paymentIntents.confirm( // paymentIntentId, // { // payment_method: paymentMethodId, // } // ); // return paymentIntent; // } catch (error) { // console.error("Error confirming payment intent:", error); // throw error; // } // } // static async retrievePaymentIntent(paymentIntentId) { // try { // return await stripe.paymentIntents.retrieve(paymentIntentId); // } catch (error) { // console.error("Error retrieving payment intent:", error); // throw error; // } // } } module.exports = StripeService;