import express from 'express';
import crypto from 'crypto';
const app = express();
app.use(express.json());
function decryptPayload(payload, apiKey) {
const [ivB64, encryptedB64] = payload.split(":");
const iv = Buffer.from(ivB64, "base64");
const encrypted = Buffer.from(encryptedB64, "base64");
const key = crypto.createHash("sha256").update(apiKey).digest();
const decipher = crypto.createDecipheriv("aes-256-cbc", key, iv);
let decrypted = decipher.update(encrypted, undefined, "utf8");
decrypted += decipher.final("utf8");
return JSON.parse(decrypted);
}
app.post('/meu-webhook', (req, res) => {
const { payload } = req.body;
if (!payload) return res.status(400).send('Payload ausente');
const data = decryptPayload(payload, process.env.API_KEY);
console.log('Evento recebido:', data);
if (data.event === 'PAYMENT_STATUS_UPDATE' && data.status === 'APPROVED') {
// processe o pagamento aprovado aqui
}
res.sendStatus(200);
});
app.listen(3000, () => console.log('Webhook ouvindo na porta 3000'));