Skip to content

Commit 5b592da

Browse files
committed
Logger updated for stripe-webhook
1 parent f9e72fb commit 5b592da

1 file changed

Lines changed: 36 additions & 5 deletions

File tree

routes/stripe-webhook.js

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
// routes/stripe-webhook.js
21
import express from 'express';
32
import { constructStripeEvent, retrieveSubscription, retrieveCustomer } from '../services/stripeService.js';
43
import { createGhostMember } from '../services/ghostService.js';
4+
import logger from '../config/logger.js';
55

66
const router = express.Router();
77

@@ -11,32 +11,57 @@ router.post(
1111
async (req, res) => {
1212
let event;
1313
try {
14+
logger.info('Incoming Stripe webhook received');
1415
event = constructStripeEvent(req.body, req.headers['stripe-signature']);
16+
logger.debug('Stripe event constructed successfully', { eventType: event.type });
1517
} catch (err) {
16-
console.error('Webhook signature verification failed:', err.message);
18+
logger.error('Webhook signature verification failed', {
19+
error: err.message,
20+
stack: err.stack
21+
});
1722
return res.status(400).send(`Webhook Error: ${err.message}`);
1823
}
1924

2025
if (event.type === 'checkout.session.completed') {
2126
try {
2227
const session = event.data.object;
28+
logger.info('Processing checkout.session.completed event', {
29+
sessionId: session.id,
30+
customer: session.customer
31+
});
2332

2433
// Extract info from metadata & customer if available
2534
let email = session.customer_details?.email;
2635
let name = session.metadata?.name;
2736
let productId = session.metadata?.productId;
2837
let plan = session.metadata?.plan;
2938

39+
logger.debug('Extracted session metadata', {
40+
emailPresent: !!email,
41+
namePresent: !!name,
42+
productId,
43+
plan
44+
});
45+
3046
// If missing, fetch from Stripe (fallback)
3147
if (!email || !name) {
48+
logger.debug('Missing email or name, fetching customer from Stripe');
3249
const customer = await retrieveCustomer(session.customer);
3350
email = email || customer.email;
3451
name = name || customer.name;
3552
}
3653

3754
// Always fetch subscription details
55+
logger.debug('Fetching subscription details');
3856
const subscription = await retrieveSubscription(session.subscription);
3957

58+
logger.info('Creating Ghost member', {
59+
email: email?.substring(0, 3) + '...@...' + email?.split('@')[1]?.substring(0, 3),
60+
name: name?.substring(0, 2) + '...',
61+
productId,
62+
plan
63+
});
64+
4065
await createGhostMember({
4166
email,
4267
name,
@@ -46,14 +71,20 @@ router.post(
4671
plan
4772
});
4873

49-
console.log(`Ghost member created: ${email} (${plan} plan)`);
74+
logger.info(`Ghost member created: ${email?.substring(0, 3)}... (${plan} plan)`);
5075
} catch (err) {
51-
console.error('Error syncing with Ghost:', err);
76+
logger.error('Error syncing with Ghost', {
77+
error: err.message,
78+
stack: err.stack,
79+
eventType: event.type
80+
});
5281
}
82+
} else {
83+
logger.debug('Unhandled Stripe event type', { eventType: event.type });
5384
}
5485

5586
res.status(200).end();
5687
}
5788
);
5889

59-
export default router;
90+
export default router;

0 commit comments

Comments
 (0)