2
0
Files
bot/apps/builder/services/stripe.ts

26 lines
804 B
TypeScript
Raw Normal View History

import { User } from 'db'
2022-05-24 14:25:15 -07:00
import { loadStripe } from '@stripe/stripe-js/pure'
import { isEmpty, sendRequest } from 'utils'
2022-05-13 15:22:44 -07:00
type Props = {
user: User
currency: 'usd' | 'eur'
plan: 'pro' | 'team'
workspaceId: string
}
export const pay = async ({ user, currency, plan, workspaceId }: Props) => {
if (isEmpty(process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY))
throw new Error('NEXT_PUBLIC_STRIPE_PUBLIC_KEY is missing in env')
const stripe = await loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY)
const { data, error } = await sendRequest<{ sessionId: string }>({
method: 'POST',
url: '/api/stripe/checkout',
2022-05-13 15:22:44 -07:00
body: { email: user.email, currency, plan, workspaceId },
})
if (error || !data) return
return stripe?.redirectToCheckout({
sessionId: data?.sessionId,
})
}