Made it so it is possible to buy a package
This commit is contained in:
35
src/app/api/success/route.ts
Normal file
35
src/app/api/success/route.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
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});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user