63 lines
2.2 KiB
JavaScript
63 lines
2.2 KiB
JavaScript
// server.js
|
|
//
|
|
// Use this sample code to handle webhook events in your integration.
|
|
//
|
|
// 1) Paste this code into a new file (server.js)
|
|
//
|
|
// 2) Install dependencies
|
|
// npm install stripe
|
|
// npm install express
|
|
//
|
|
// 3) Run the server on http://localhost:4242
|
|
// node server.js
|
|
|
|
// The library needs to be configured with your account's secret key.
|
|
// Ensure the key is kept out of any version control system you might be using.
|
|
const stripe = require('stripe')('sk_test_...');
|
|
const express = require('express');
|
|
const app = express();
|
|
|
|
|
|
// This is your Stripe CLI webhook secret for testing your endpoint locally.
|
|
const endpointSecret = "whsec_fed56735156a81c3ae36f3bb5dbd4dece5412ba299f55702c5cf077c69ce3a11";
|
|
|
|
app.post('/webhook', express.raw({type: 'application/json'}), (request, response) => {
|
|
const sig = request.headers['stripe-signature'];
|
|
|
|
let event;
|
|
|
|
try {
|
|
event = stripe.webhooks.constructEvent(request.body, sig, endpointSecret);
|
|
} catch (err) {
|
|
response.status(400).send(`Webhook Error: ${err.message}`);
|
|
return;
|
|
}
|
|
|
|
// Handle the event
|
|
switch (event.type) {
|
|
case 'checkout.session.async_payment_failed':
|
|
const checkoutSessionAsyncPaymentFailed = event.data.object;
|
|
// Then define and call a function to handle the event checkout.session.async_payment_failed
|
|
break;
|
|
case 'checkout.session.async_payment_succeeded':
|
|
const checkoutSessionAsyncPaymentSucceeded = event.data.object;
|
|
// Then define and call a function to handle the event checkout.session.async_payment_succeeded
|
|
break;
|
|
case 'checkout.session.completed':
|
|
const checkoutSessionCompleted = event.data.object;
|
|
// Then define and call a function to handle the event checkout.session.completed
|
|
break;
|
|
case 'checkout.session.expired':
|
|
const checkoutSessionExpired = event.data.object;
|
|
// Then define and call a function to handle the event checkout.session.expired
|
|
break;
|
|
// ... handle other event types
|
|
default:
|
|
console.log(`Unhandled event type ${event.type}`);
|
|
}
|
|
|
|
// Return a 200 response to acknowledge receipt of the event
|
|
response.send();
|
|
});
|
|
|
|
app.listen(4242, () => console.log('Running on port 4242')); |