const express = require('express'); const bodyParser = require('body-parser'); const ipn = require('paypal-ipn'); const { Client, Intents } = require('discord.js'); const app = express(); const port = 3000; const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] }); const CHANNELID = '1038201022105002054'; client.once('ready', () => { console.log(`Loggato come ${client.user.tag}! .`); }); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.post('/ipn', (req, res) => { console.log('Ricevuta notifica IPN da PayPal:', req.body); ipn.verify(req.body, { 'allow_sandbox': true }, function callback(err, msg) { if (err) { console.error('Errore nella verifica IPN:', err); return; } if (req.body.payment_status === 'Completed') { const payerEmail = req.body.payer_email; const paymentAmount = req.body.mc_gross; const paymentCurrency = req.body.mc_currency; const transactionId = req.body.txn_id; const paymentDate = req.body.payment_date; const message = ` **Nuovo Pagamento Ricevuto!** \n**Dettagli della Transazione:** \n**Ammontare:** ${paymentAmount} ${paymentCurrency} \n**Email del Pagante:** ${payerEmail} \n**Data del Pagamento:** ${paymentDate} \n**ID Transazione:** ${transactionId} `; const channel = client.channels.cache.get(CHANNELID); if (channel) { channel.send(message) .then(() => console.log('Messaggio inviato con successo al canale Discord')) .catch(error => console.error('Errore nell\'invio del messaggio al canale Discord:', error)); } else { console.error('Canale Discord non trovato!'); } } }); res.sendStatus(200); }); app.listen(port, () => { console.log(`Server IPN in ascolto su http://localhost:${port}`); });