Files
web/app/api/web/add-card-callback/[lang]/route.ts
2024-08-22 14:07:36 +02:00

55 lines
1.8 KiB
TypeScript

import { NextRequest } from "next/server"
import { env } from "process"
import { Lang } from "@/constants/languages"
import { profile } from "@/constants/routes/myPages"
import { serverClient } from "@/lib/trpc/server"
export async function GET(
request: NextRequest,
{ params }: { params: { lang: string } }
) {
console.log(`[add-card] callback started`)
const lang = params.lang as Lang
const returnUrl = new URL(`${env.PUBLIC_URL}/${profile[lang ?? Lang.en]}`)
try {
const searchParams = request.nextUrl.searchParams
const success = searchParams.get("success")
const failure = searchParams.get("failure")
const cancel = searchParams.get("cancel")
const trxId = searchParams.get("datatransTrxId")
if (success) {
if (trxId) {
const saveCardSuccess = await serverClient().user.creditCard.save({
transactionId: trxId,
})
if (saveCardSuccess) {
console.log(`[add-card] planet success: card saved success`)
returnUrl.searchParams.set("success", "true")
} else {
console.log(`[add-card] planet success: card saved fail`)
returnUrl.searchParams.set("failure", "true")
}
} else {
console.log(`[add-card] planet success: missing datatransTrxId`)
returnUrl.searchParams.set("error", "true")
}
} else if (failure) {
console.log(`[add-card] planet fail`)
returnUrl.searchParams.set("failure", "true")
} else if (cancel) {
console.log(`[add-card] planet cancel`)
returnUrl.searchParams.set("cancel", "true")
}
} catch (e) {
console.error(`[add-card] error saving credit card`, e)
returnUrl.searchParams.set("error", "true")
}
console.log(`[add-card] redirecting to: ${returnUrl}`)
return Response.redirect(returnUrl)
}