@@ -69,6 +69,45 @@ async function saveLetters(transactionId, constituentId, letter, html, deliveryM
6969 }
7070}
7171
72+ router . post ( '/create-transaction' , async ( req , res ) => {
73+ try {
74+ const { sessionId } = req . body ;
75+
76+ if ( ! sessionId ) {
77+ return res . status ( 400 ) . json ( { error : 'Session ID is required' } ) ;
78+ }
79+
80+ const session = await stripe . checkout . sessions . retrieve ( sessionId ) ;
81+
82+ if ( ! session ) {
83+ return res . status ( 404 ) . json ( { error : 'Stripe session not found' } ) ;
84+ }
85+
86+ const formattedTransaction = {
87+ stripe_transaction_id : sessionId ,
88+ amount : session . amount_total ,
89+ currency : session . currency ,
90+ payment_method : session . payment_method_types [ 0 ] || 'unknown' ,
91+ email : session . customer_details ?. email || 'unknown' ,
92+ } ;
93+
94+ await db ( 'transactions' ) . insert ( formattedTransaction ) ;
95+
96+ return res . status ( 201 ) . json ( {
97+ message : 'Transaction created successfully' ,
98+ transaction : formattedTransaction ,
99+ } ) ;
100+ } catch ( error ) {
101+ console . error ( 'Error creating transaction:' , error ) ;
102+
103+ const statusCode = error instanceof CheckoutError ? 400 : 500 ;
104+
105+ return res . status ( statusCode ) . json ( { error : error . message } ) ;
106+ }
107+ } ) ;
108+
109+
110+
72111// Refactored /create-checkout-session route
73112router . post ( '/create-checkout-session' , async ( req , res ) => {
74113 const { donation, user, letter, deliveryMethods } = req . body ;
0 commit comments