import { loadStripe, Stripe } from "@stripe/stripe-js"; import { Maybe } from "@trpc/server"; import { stringify } from "querystring"; const stripePublicKey = process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY!; let stripePromise: Promise; /** * This is a singleton to ensure we only instantiate Stripe once. */ const getStripe = (userPublicKey?: string) => { if (!stripePromise) { stripePromise = loadStripe( userPublicKey || stripePublicKey /* , { locale: "es-419" TODO: Handle multiple locales, } */ ); } return stripePromise; }; export function createPaymentLink(opts: { paymentUid: string; name?: Maybe; date?: Maybe; absolute?: boolean; }): string { const { paymentUid, name, date, absolute = true } = opts; let link = ""; if (absolute) link = process.env.NEXT_PUBLIC_APP_URL!; const query = stringify({ date, name }); return link + `/payment/${paymentUid}?${query}`; } export default getStripe;