Quantcast
Viewing all articles
Browse latest Browse all 212

Error CORS en redireccion a Mercadopago

Tengo un proyecto backend desarrollado para un curso y le quiero agregar una opcion de pago con mercadopago y obtengo el siguiente error

Access to fetch at 'https://www.mercadopago.com.ar/checkout/v1/redirect?pref_id=1460943817-641c1d86-9039-43c0-b823-6b551baae08e' (redirected from 'https://backendproject-production-c244.up.railway.app/ticket/64d4efdba84d944152563bef/purchase-redirect') from origin 'https://backendproject-production-c244.up.railway.app' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

El tema es que si hago click en el link de mercadopago y lo abro manualmente en una pestaña aparte funciona perfecto el resto de los pasos, solo me falta ese.

Esta es la config de mi CORS que tengo en mi archivo app.js

app.use(cors({  origin: "*",   methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',  credentials: true}));

Y este es el controlador que redirecciona a mercadopago

export const createTicketAndRedirect = async (req, res) => {  try {    const cartId = req.params.cid;    // Encuentra el cartID en userModel    const user = await userModel.findOne({ cartID: cartId });    if (user) {      // Obtiene los productos del carrito utilizando cartModel y el cartID del usuario      const cart = await cartModel.findOne({ cartID: cartId }).lean().populate("products.product");      if (cart) {        if (cart.products.length > 0) {          const ticketProducts = [];          let subtotal = 0;          // Calcula el subtotal y arma la lista de productos del ticket          cart.products.forEach(product => {            const productData = {              name: product.product.title,              price: product.product.price,              quantity: product.quantity,              totalPrice: product.quantity * product.product.price            };            ticketProducts.push(productData);            subtotal += productData.totalPrice;          });          const total = subtotal;           // Calcula el valor total de todos los productos          const totalAPagar = ticketProducts.reduce((total, product) => total + product.totalPrice, 0);          // Obtiene el nombre del comprador y la fecha de compra          const purchaser = user.email;          const purchase_datetime = new Date();          const ticketID = uuidv4();          // Crea el ticket en la base de datos utilizando ticketModel          const ticket = await ticketModel.create({            _id: ticketID,            products: ticketProducts,            subtotal: subtotal,            total: total,            totalAPagar: totalAPagar,             purchaser: purchaser,            purchase_datetime: purchase_datetime          });          // Crear preferencia de pago en MercadoPago          const mercadoPagoItems = cart.products.map(product => ({            title: product.product.title,            unit_price: product.product.price,            currency_id: "ARS",             quantity: product.quantity,          }));          const preference = await mercadopago.preferences.create({            items: mercadoPagoItems,            notification_url: "https://tu-domino.com/webhook",            back_urls: {              success: "https://backendproject-production-c244.up.railway.app/thankyou",              pending: "https://e720-190-237-16-208.sa.ngrok.io/pending",              failure: "https://e720-190-237-16-208.sa.ngrok.io/failure",            },          });          // Redirigir al usuario a la página de pago de MercadoPago          res.redirect(preference.body.init_point);        } else {          res.status(400).send("No se encuentran productos agregados al carrito.");        }      } else {        res.status(400).send("El Carrito solicitado no contiene productos.");      }    } else {      res.status(400).send("El cartID no está asociado a ningún usuario.");    }  } catch (err) {    console.error("Error en createTicket:", err);    res.status(500).send(err.message);  }};

Viewing all articles
Browse latest Browse all 212

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>