const express = require('express');
const { Eventop } = require('@eventop/sdk');
const app = express();
const eventop = new Eventop({
apiKey: process.env.EVENTOP_API_KEY
});
app.post('/create-subscription', async (req, res) => {
const { planId } = req.body;
const user = req.user; // from your auth middleware
try {
const session = await eventop.checkout.create({
planId,
customerEmail: user.email,
customerId: user.id.toString(),
successUrl: `${process.env.BASE_URL}/success`,
cancelUrl: `${process.env.BASE_URL}/pricing`
});
res.json({ checkoutUrl: session.url });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// Webhook endpoint
app.post('/webhooks/eventop', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.headers['x-webhook-signature'];
try {
const event = eventop.webhooks.constructEvent(
req.body,
signature,
process.env.EVENTOP_WEBHOOK_SECRET
);
switch (event.event) {
case 'subscription.created':
console.log('New subscription:', event.data);
break;
// Handle other events...
}
res.json({ received: true });
} catch (err) {
res.status(400).send('Webhook signature verification failed');
}
});