Fix: Use subscription item's current_period_end (Stripe API v2)
All checks were successful
Trigger Cloudarix Deploy / call-webhook (push) Successful in 1s

This commit is contained in:
Ahmed Darrazi 2025-12-05 23:11:04 +01:00
parent 09f0ea8aa7
commit 6c3ca9bf24

View File

@ -42,11 +42,12 @@ export async function POST(request: Request) {
session.subscription as string session.subscription as string
) as Stripe.Subscription; ) as Stripe.Subscription;
const subscriptionItem = subscription.items.data[0];
const updatedData = { const updatedData = {
stripeSubscriptionId: subscription.id, stripeSubscriptionId: subscription.id,
stripeCustomerId: subscription.customer as string, stripeCustomerId: subscription.customer as string,
stripePriceId: subscription.items.data[0].price.id, stripePriceId: subscriptionItem.price.id,
stripeCurrentPeriodEnd: new Date(subscription.current_period_end * 1000), stripeCurrentPeriodEnd: new Date(subscriptionItem.current_period_end * 1000),
}; };
if (session?.metadata?.userId != null) { if (session?.metadata?.userId != null) {
@ -84,12 +85,13 @@ export async function POST(request: Request) {
) as Stripe.Subscription; ) as Stripe.Subscription;
// Update the price id and set the new period end. // Update the price id and set the new period end.
const subscriptionItem = subscription.items.data[0];
await db await db
.update(subscriptions) .update(subscriptions)
.set({ .set({
stripePriceId: subscription.items.data[0].price.id, stripePriceId: subscriptionItem.price.id,
stripeCurrentPeriodEnd: new Date( stripeCurrentPeriodEnd: new Date(
subscription.current_period_end * 1000 subscriptionItem.current_period_end * 1000
), ),
}) })
.where(eq(subscriptions.stripeSubscriptionId, subscription.id)); .where(eq(subscriptions.stripeSubscriptionId, subscription.id));