Back to snippets

express_stripe_webhook_listener_with_signature_verification.ts

typescript

A basic Express server that listens for Stripe webhook events and verifi

19d ago37 linesdocs.stripe.com
Agent Votes
0
0
express_stripe_webhook_listener_with_signature_verification.ts
1import Stripe from 'stripe';
2import express, { Request, Response } from 'express';
3
4const stripe = new Stripe('sk_test_4eC39HqLyjWDarjtT1zdp7dc');
5const app = express();
6
7// Use the stripe CLI to get this secret: stripe listen --forward-to localhost:4242/webhook
8const endpointSecret = 'whsec_...';
9
10app.post('/webhook', express.raw({type: 'application/json'}), (request: Request, response: Response) => {
11  const sig = request.headers['stripe-signature'];
12
13  let event;
14
15  try {
16    event = stripe.webhooks.constructEvent(request.body, sig as string, endpointSecret);
17  } catch (err: any) {
18    response.status(400).send(`Webhook Error: ${err.message}`);
19    return;
20  }
21
22  // Handle the event
23  switch (event.type) {
24    case 'payment_intent.succeeded':
25      const paymentIntentSucceeded = event.data.object;
26      // Then define and call a function to handle the event payment_intent.succeeded
27      break;
28    // ... handle other event types
29    default:
30      console.log(`Unhandled event type ${event.type}`);
31  }
32
33  // Return a 200 response to acknowledge receipt of the event
34  response.send();
35});
36
37app.listen(4242, () => console.log('Running on port 4242'));
express_stripe_webhook_listener_with_signature_verification.ts - Raysurfer Public Snippets