0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-17 23:44:39 -05:00

Improved error logging for webhook handling

no-issue
This commit is contained in:
Fabien O'Carroll 2019-10-08 18:14:59 +07:00
parent 310972f73c
commit 5a17327a93
2 changed files with 12 additions and 4 deletions

View file

@ -192,9 +192,15 @@ module.exports = function MembersApi({
}); });
middleware.handleStripeWebhook.use(ensureStripe, body.raw({type: 'application/json'}), async function (req, res) { middleware.handleStripeWebhook.use(ensureStripe, body.raw({type: 'application/json'}), async function (req, res) {
let event;
try {
event = await stripe.parseWebhook(req.body, req.headers['stripe-signature']);
} catch (err) {
common.logging.error(err);
res.writeHead(401);
return res.end();
}
try { try {
const event = await stripe.parseWebhook(req.body, req.headers['stripe-signature']);
if (event.type === 'customer.subscription.deleted') { if (event.type === 'customer.subscription.deleted') {
await stripe.handleCustomerSubscriptionDeletedWebhook(event.data.object); await stripe.handleCustomerSubscriptionDeletedWebhook(event.data.object);
} }
@ -226,7 +232,7 @@ module.exports = function MembersApi({
res.writeHead(200); res.writeHead(200);
res.end(); res.end();
} catch (err) { } catch (err) {
common.logging.error(err); common.logging.error(`Error handling webhook ${event.type}`, err);
res.writeHead(400); res.writeHead(400);
res.end(); res.end();
} }

View file

@ -80,7 +80,9 @@ module.exports = class StripePaymentProcessor {
} }
async parseWebhook(body, signature) { async parseWebhook(body, signature) {
return this._stripe.webhooks.constructEvent(body, signature, this._webhookSecret); const event = await this._stripe.webhooks.constructEvent(body, signature, this._webhookSecret);
debug(`Parsed webhook event: ${event.type}`);
return event;
} }
async createCheckoutSession(member, planName, options) { async createCheckoutSession(member, planName, options) {