Created
April 9, 2025 21:43
-
-
Save Giovasdf/5049f19e2dc0fd95760c49ad95b12f82 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const express = require('express'); | |
| const cors = require('cors'); | |
| const bodyParser = require('body-parser'); | |
| const { Options, Environment, WebpayPlus } = require('transbank-sdk'); | |
| const app = express(); | |
| const PORT = 3001; | |
| app.use(cors()); | |
| app.use(bodyParser.json()); | |
| // Configuración de Transbank (usando credenciales de integración) | |
| const tx = new WebpayPlus.Transaction( | |
| new Options( | |
| '597055555532', // Código de comercio (usar el real en producción) | |
| '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C', // API Key (usar el real en producción) | |
| Environment.Integration // Ambiente de integración | |
| ) | |
| ); | |
| // Endpoint para crear transacción | |
| app.post('/api/create-transaction', async (req, res) => { | |
| try { | |
| const { amount, sessionId, buyOrder, returnUrl } = req.body; | |
| if (!amount || !sessionId || !buyOrder || !returnUrl) { | |
| return res.status(400).json({ error: 'Faltan datos requeridos' }); | |
| } | |
| console.log('🔁 Creando transacción con:', { amount, sessionId, buyOrder, returnUrl }); | |
| const response = await tx.create( | |
| buyOrder, | |
| sessionId, | |
| amount, | |
| returnUrl | |
| ); | |
| console.log('✅ Transacción creada:', response); | |
| res.json(response); | |
| } catch (error) { | |
| console.error('❌ Error creando transacción:', error); | |
| res.status(500).json({ error: error.message || 'Error al crear la transacción' }); | |
| } | |
| }); | |
| // Endpoint para confirmar transacción | |
| app.post('/api/commit-transaction', async (req, res) => { | |
| try { | |
| const { token } = req.body; | |
| if (!token) { | |
| return res.status(400).json({ error: 'Token es requerido' }); | |
| } | |
| console.log('🔁 Confirmando transacción con token:', token); | |
| const response = await tx.commit(token); | |
| console.log('✅ Transacción confirmada:', response); | |
| res.json(response); | |
| } catch (error) { | |
| console.error('❌ Error confirmando transacción:', error); | |
| res.status(500).json({ error: error.message || 'Error al confirmar transacción' }); | |
| } | |
| }); | |
| // Endpoint para obtener estado de transacción | |
| app.post('/api/transaction-status', async (req, res) => { | |
| try { | |
| const { token } = req.body; | |
| if (!token) { | |
| return res.status(400).json({ error: 'Token es requerido' }); | |
| } | |
| const response = await tx.status(token); | |
| res.json(response); | |
| } catch (error) { | |
| console.error('❌ Error obteniendo estado:', error); | |
| res.status(500).json({ error: error.message || 'Error al obtener estado' }); | |
| } | |
| }); | |
| // Endpoint de ejemplo para página de éxito | |
| app.get('/api/success', (req, res) => { | |
| res.json({ message: 'Pago exitoso' }); | |
| }); | |
| // Endpoint de ejemplo para página de fracaso | |
| app.get('/api/failure', (req, res) => { | |
| res.json({ message: 'Pago fallido' }); | |
| }); | |
| app.listen(PORT, () => { | |
| console.log(`🚀 Servidor corriendo en http://localhost:${PORT}`); | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment