import express from 'express';
import { GwopCheckout } from 'gwop-checkout';
const gwop = new GwopCheckout({
merchantApiKey: process.env.GWOP_CHECKOUT_API_KEY,
});
const app = express();
app.post(
'/webhooks/gwop',
express.raw({ type: 'application/json' }),
async (req, res) => {
try {
const event = gwop.webhooks.constructEvent(
req.body.toString('utf8'),
req.header('x-gwop-signature'),
process.env.GWOP_WEBHOOK_SECRET!,
);
await gwop.webhooks.dispatch(event, {
invoicePaid: async (evt) => {
await fulfillOrder(evt.data.invoice_id);
},
invoiceExpired: async (evt) => {
await cancelPendingOrder(evt.data.invoice_id);
},
invoiceCanceled: async (evt) => {
await cancelPendingOrder(evt.data.invoice_id);
},
});
return res.json({ ok: true });
} catch {
return res.status(401).json({ error: 'invalid_signature' });
}
},
);