36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import axios from "axios";
|
|
import moment from "moment";
|
|
|
|
export async function POST(request: Request) {
|
|
const {id, product} = (await request.json()) as {id: string; product: string};
|
|
|
|
if (!id || !product) {
|
|
return Response.json({error: "Product and/or id missing from the body."}, {status: 400});
|
|
}
|
|
|
|
try {
|
|
const idChecker = await axios.get(`https://api.stripe.com/v1/checkout/sessions/${id}`, {
|
|
auth: {username: process.env.STRIPE_SECRET || "", password: ""},
|
|
});
|
|
|
|
if (idChecker.data["payment_status"] !== "paid") {
|
|
return Response.json({error: "The payment has not yet finished!"}, {status: 401});
|
|
}
|
|
|
|
const productChecker = await axios.get(`https://api.stripe.com/v1/products/${product}`, {
|
|
auth: {username: process.env.STRIPE_SECRET || "", password: ""},
|
|
});
|
|
|
|
const email = idChecker.data["customer_details"]["email"];
|
|
|
|
const days = productChecker.data["metadata"]["expiry_days"];
|
|
const expiryDate = moment(new Date()).add(days, "days").toDate();
|
|
|
|
await axios.post("https://encoach.com/api/stripe", {expiryDate, email, key: process.env.STRIPE_SECRET, checkout: id});
|
|
|
|
return Response.json({error: null, ok: true});
|
|
} catch (e) {
|
|
return Response.json({error: "Something went wrong or one of the values is invalid!"}, {status: 500});
|
|
}
|
|
}
|