From 7ecee01d2078736982e74f186548dc34780f6ee7 Mon Sep 17 00:00:00 2001 From: forehalo Date: Tue, 24 Oct 2023 11:46:29 +0800 Subject: [PATCH] fix(server): respond stripe webhook immediately --- .../backend/server/src/modules/payment/webhook.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/backend/server/src/modules/payment/webhook.ts b/packages/backend/server/src/modules/payment/webhook.ts index 785ea97832..1fda0b6411 100644 --- a/packages/backend/server/src/modules/payment/webhook.ts +++ b/packages/backend/server/src/modules/payment/webhook.ts @@ -64,9 +64,14 @@ export class StripeWebhook { `[${event.id}] Stripe Webhook {${event.type}} received.` ); - // handle duplicated events? - // see https://stripe.com/docs/webhooks#handle-duplicate-events - await this.event.emitAsync(event.type, event.data.object); + // Stripe requires responseing webhook immediately and handle event asynchronously. + setImmediate(() => { + // handle duplicated events? + // see https://stripe.com/docs/webhooks#handle-duplicate-events + this.event.emitAsync(event.type, event.data.object).catch(e => { + this.logger.error('Failed to handle Stripe Webhook event.', e); + }); + }); } catch (err) { this.logger.error('Stripe Webhook error', err); throw new NotAcceptableException();