implemented stripe for the cloud instance
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import Stripe from "stripe";
|
||||
import checkSubscription from "./checkSubscription";
|
||||
|
||||
export default async function paymentCheckout(
|
||||
stripeSecretKey: string,
|
||||
email: string,
|
||||
action: "register" | "login",
|
||||
priceId: string
|
||||
) {
|
||||
const stripe = new Stripe(stripeSecretKey, {
|
||||
apiVersion: "2022-11-15",
|
||||
});
|
||||
|
||||
// const a = await stripe.prices.retrieve("price_1NTn3PDaRUw6CJPLkw4dcwlJ");
|
||||
|
||||
// const listBySub = await stripe.subscriptions.list({
|
||||
// customer: "cus_OGUzJrRea8Qbxx",
|
||||
// });
|
||||
|
||||
const listByEmail = await stripe.customers.list({
|
||||
email: email.toLowerCase(),
|
||||
expand: ["data.subscriptions"],
|
||||
});
|
||||
|
||||
const isExistingCostomer = listByEmail?.data[0]?.id || undefined;
|
||||
|
||||
// const hasPreviouslySubscribed = listByEmail.data.find((customer, i) => {
|
||||
// const hasValidSubscription = customer.subscriptions?.data.some(
|
||||
// (subscription) => {
|
||||
// return subscription?.items?.data?.some(
|
||||
// (subscriptionItem) => subscriptionItem?.plan?.id === priceId
|
||||
// );
|
||||
// }
|
||||
// );
|
||||
|
||||
// return (
|
||||
// customer.email?.toLowerCase() === email.toLowerCase() &&
|
||||
// hasValidSubscription
|
||||
// );
|
||||
// });
|
||||
|
||||
// const previousSubscriptionId =
|
||||
// hasPreviouslySubscribed?.subscriptions?.data[0].id;
|
||||
|
||||
// if (previousSubscriptionId) {
|
||||
// console.log(previousSubscriptionId);
|
||||
// const subscription = await stripe.subscriptions.resume(
|
||||
// previousSubscriptionId
|
||||
// );
|
||||
// }
|
||||
|
||||
const session = await stripe.checkout.sessions.create({
|
||||
customer: isExistingCostomer ? isExistingCostomer : undefined,
|
||||
line_items: [
|
||||
{
|
||||
price: priceId,
|
||||
quantity: 1,
|
||||
},
|
||||
],
|
||||
mode: "subscription",
|
||||
customer_email: isExistingCostomer ? undefined : email.toLowerCase(),
|
||||
success_url: "http://localhost:3000?session_id={CHECKOUT_SESSION_ID}",
|
||||
cancel_url: "http://localhost:3000/login",
|
||||
automatic_tax: {
|
||||
enabled: true,
|
||||
},
|
||||
subscription_data: {
|
||||
trial_period_days: 14,
|
||||
},
|
||||
});
|
||||
|
||||
return { response: session.url, status: 200 };
|
||||
}
|
||||
Reference in New Issue
Block a user