30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
|
|
import { createPaymentCheckout } from "@/entities/payment/api";
|
|
import { ROUTES } from "@/shared/constants/client-routes";
|
|
|
|
export async function GET(req: NextRequest) {
|
|
const productId = req.nextUrl.searchParams.get("productId");
|
|
const placementId = req.nextUrl.searchParams.get("placementId");
|
|
const paywallId = req.nextUrl.searchParams.get("paywallId");
|
|
const fbPixels = req.nextUrl.searchParams.get("fb_pixels");
|
|
const productPrice = req.nextUrl.searchParams.get("price");
|
|
const currency = req.nextUrl.searchParams.get("currency");
|
|
|
|
const data = await createPaymentCheckout({
|
|
productId: productId || "",
|
|
placementId: placementId || "",
|
|
paywallId: paywallId || "",
|
|
});
|
|
|
|
let redirectUrl: URL = new URL(data?.paymentUrl || "", req.nextUrl.origin);
|
|
if (!redirectUrl) {
|
|
redirectUrl = new URL(`${ROUTES.paymentFailed()}`, origin);
|
|
}
|
|
if (fbPixels) redirectUrl.searchParams.set("fb_pixels", fbPixels);
|
|
if (productPrice) redirectUrl.searchParams.set("price", productPrice);
|
|
if (currency) redirectUrl.searchParams.set("currency", currency);
|
|
|
|
return NextResponse.redirect(redirectUrl, { status: 307 });
|
|
}
|