/**
 * بازگشت کاربر از درگاه: GET /api/payment/callback/{gateway}?Authority=...&Status=OK|NOK
 * تأیید تراکنش همیشه سمت سرور و نزد خود درگاه انجام می‌شود؛ به پارامتر Status به‌تنهایی اعتماد نمی‌شود.
 */
import { NextResponse, type NextRequest } from "next/server";
import { completePayment } from "@/server/services/checkout";

export async function GET(req: NextRequest, { params }: { params: Promise<{ gateway: string }> }) {
  const { gateway } = await params;
  const result = await completePayment(gateway, req.nextUrl.searchParams).catch((err) => {
    console.error("[payment] خطا در تأیید پرداخت", err);
    return { ok: false, orderCode: undefined };
  });
  const target = new URL("/checkout/result", req.nextUrl.origin);
  target.searchParams.set("status", result.ok ? "success" : "failed");
  if (result.orderCode) target.searchParams.set("order", result.orderCode);
  return NextResponse.redirect(target, 303);
}
