| 
									
										
										
										
											2021-09-22 18:36:13 +00:00
										 |  |  | import type { NextApiRequest, NextApiResponse } from "next"; | 
					
						
							|  |  |  | import { stringify } from "querystring"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-22 19:52:38 +00:00
										 |  |  | import { getSession } from "@lib/auth"; | 
					
						
							| 
									
										
										
										
											2021-11-26 11:03:43 +00:00
										 |  |  | import { BASE_URL } from "@lib/config/constants"; | 
					
						
							| 
									
										
										
										
											2021-09-22 19:52:38 +00:00
										 |  |  | import prisma from "@lib/prisma"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-22 18:36:13 +00:00
										 |  |  | const client_id = process.env.STRIPE_CLIENT_ID; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default async function handler(req: NextApiRequest, res: NextApiResponse) { | 
					
						
							|  |  |  |   if (req.method === "GET") { | 
					
						
							|  |  |  |     // Check that user is authenticated
 | 
					
						
							|  |  |  |     const session = await getSession({ req: req }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!session) { | 
					
						
							|  |  |  |       res.status(401).json({ message: "You must be logged in to do this" }); | 
					
						
							|  |  |  |       return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Get user
 | 
					
						
							|  |  |  |     const user = await prisma.user.findUnique({ | 
					
						
							|  |  |  |       where: { | 
					
						
							|  |  |  |         id: session.user?.id, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       select: { | 
					
						
							|  |  |  |         email: true, | 
					
						
							|  |  |  |         name: true, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-26 11:03:43 +00:00
										 |  |  |     const redirect_uri = encodeURI(BASE_URL + "/api/integrations/stripepayment/callback"); | 
					
						
							| 
									
										
										
										
											2021-09-22 18:36:13 +00:00
										 |  |  |     const stripeConnectParams = { | 
					
						
							|  |  |  |       client_id, | 
					
						
							|  |  |  |       scope: "read_write", | 
					
						
							|  |  |  |       response_type: "code", | 
					
						
							|  |  |  |       "stripe_user[email]": user?.email, | 
					
						
							|  |  |  |       "stripe_user[first_name]": user?.name, | 
					
						
							|  |  |  |       redirect_uri, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     const query = stringify(stripeConnectParams); | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2022-02-07 23:35:26 +00:00
										 |  |  |      * Choose Express or Standard Stripe accounts | 
					
						
							| 
									
										
										
										
											2021-09-22 18:36:13 +00:00
										 |  |  |      * @url https://stripe.com/docs/connect/accounts
 | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     // const url = `https://connect.stripe.com/express/oauth/authorize?${query}`;
 | 
					
						
							|  |  |  |     const url = `https://connect.stripe.com/oauth/authorize?${query}`; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     res.status(200).json({ url }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |