import type { Stripe } from "stripe"
import { env } from "~/env.mjs"
import { stripe } from "~/lib/stripe"
import { updateCredits } from "~/server/helpers/userRepo"
import { NextApiRequest, NextApiResponse } from "next"
import { Readable } from "stream"
import { buffer} from "micro"
export const config = {
api: {
bodyParser: false,
},
};
export async function POST(req: NextApiRequest, res: NextApiResponse) {
const buf = await buffer(req);
const sig = req.headers['stripe-signature'];
let event: Stripe.Event;
try {
if (!sig || !env.STRIPE_WEBHOOK_KEY) return res.status(400);
event = stripe.webhooks.constructEvent(buf, sig, env.STRIPE_WEBHOOK_KEY);
} catch (err: any) {
console.log(`❌ Error message: ${err.message}`);
return res.status(400).send(`Webhook Error: ${err.message}`);
}
try {
const session = event.data.object as Stripe.Checkout.Session;
if (event.type === "checkout.session.completed") {
await updateCredits(session.customer as string);
}
} catch (err: any) {
console.log(`❌ Error message: ${err.message}`);
return res.status(400).send(`Webhook Error: ${err.message}`);
}
res.json({ received: true})
return res.status(200);
}
import type { Stripe } from "stripe"
import { env } from "~/env.mjs"
import { stripe } from "~/lib/stripe"
import { updateCredits } from "~/server/helpers/userRepo"
import { NextApiRequest, NextApiResponse } from "next"
import { Readable } from "stream"
import { buffer} from "micro"
export const config = {
api: {
bodyParser: false,
},
};
export async function POST(req: NextApiRequest, res: NextApiResponse) {
const buf = await buffer(req);
const sig = req.headers['stripe-signature'];
let event: Stripe.Event;
try {
if (!sig || !env.STRIPE_WEBHOOK_KEY) return res.status(400);
event = stripe.webhooks.constructEvent(buf, sig, env.STRIPE_WEBHOOK_KEY);
} catch (err: any) {
console.log(`❌ Error message: ${err.message}`);
return res.status(400).send(`Webhook Error: ${err.message}`);
}
try {
const session = event.data.object as Stripe.Checkout.Session;
if (event.type === "checkout.session.completed") {
await updateCredits(session.customer as string);
}
} catch (err: any) {
console.log(`❌ Error message: ${err.message}`);
return res.status(400).send(`Webhook Error: ${err.message}`);
}
res.json({ received: true})
return res.status(200);
}