AlertBayTrumpeter-website/app/api/products/route.ts

55 lines
1.7 KiB
TypeScript

import { NextResponse } from "next/server"
import Stripe from "stripe"
export const runtime = "edge"
export async function GET() {
try {
const stripeSecretKey = process.env.STRIPE_SECRET_KEY?.trim()
if (!stripeSecretKey) {
return NextResponse.json({ error: "Stripe configuration missing" }, { status: 500 })
}
if (stripeSecretKey === "sk_test_your_secret_key_here" || stripeSecretKey.includes("your_secret_key_here")) {
return NextResponse.json({ error: "Please configure your actual Stripe secret key" }, { status: 500 })
}
const stripe = new Stripe(stripeSecretKey, {
apiVersion: "2024-06-20",
})
// Fetch products and their prices
const products = await stripe.products.list({
active: true,
expand: ["data.default_price"],
})
// Filter for one-time payment products (not recurring subscriptions)
const oneTimeProducts = products.data.filter((product) => {
const price = product.default_price as Stripe.Price
return price && price.type === "one_time"
})
const productsWithPrices = oneTimeProducts.map((product) => {
const price = product.default_price as Stripe.Price
return {
id: product.id,
name: product.name,
description: product.description,
images: product.images,
price: {
id: price.id,
amount: price.unit_amount,
currency: price.currency,
},
}
})
return NextResponse.json({ products: productsWithPrices })
} catch (error) {
console.error("[v0] Error fetching products:", error)
return NextResponse.json({ error: "Failed to fetch products" }, { status: 500 })
}
}