Jump to content

Edit History

PepeFernandez

PepeFernandez


hide api

Buenas estoy tratando de modificar el listado de productos le he dado este formato:
image.thumb.png.2b61a34be49b74980461508ad3071870.png

la idea es que el botón pedir muestra gratuíta, agregue el producto al carrito, el producto tiene una variante para ser muestra. he visto que dentro de la página del producto, para agregarla al carrito tiene como un formulario donde puedo poner la cantidad del producto que quiero y esas cosas.

La cosa es que hacer de cada botón un formulario no se si funcionará yo había pensado en una api, he creado en el apartado de webservice una api que me da acceso al carrito, pero no me aclaro mucho a conseguir que ande y creo que el error lo tengo en la ruta, este es mi javascript:

 

 /*AGREGAR MUESTRAS AL CARRITO DESDE CATÁLOGO*/

      $('.product-table-cell').on('click', function() {
         var productId = $(this).data('product-id');
         var apiUrl = '/api/carts'; 
         var apiKey = 'api-key'; 
         var cartId = $(this).data('id-cart');

         // Verifica si los datos están presentes
         if (!productId || !apiKey || !cartId) {
            console.error('Datos faltantes: productId, apiKey o cartId no están definidos');
            return;
         }

         // Datos del nuevo producto a añadir
         var newProduct = {
            "cart": {
               "associations": {
                     "cart_rows": [{
                        "id_product": productId,
                        "id_product_attribute": 0,
                        "quantity": 1
                     }]
               }
            }
         };

         fetch(apiUrl + '/' + cartId, {
            method: 'PUT',
            headers: {
               'Content-Type': 'application/json',
               'Authorization': 'Basic ' + btoa(apiKey + ':')
            },
            body: JSON.stringify(newProduct)
         })
         .then(response => response.text()) // Cambia a text() temporalmente para depuración
         .then(text => {
            try {
               const data = JSON.parse(text);
               if (data.id) {
                     console.log('Producto agregado con éxito');
               } else {
                     console.error('Fallo al agregar el producto', data);
               }
            } catch (e) {
               console.error('Error al parsear JSON:', e);
               console.error('Respuesta del servidor:', text);
            }
         })
         .catch(error => {
            console.error('Error en la solicitud:', error);
         });
      });

Alguien podría echarme una mano? ha hecho algún caso similar, pasar documentación, conoce la ruta correcta, me puede explicar o pasar información sobre los hooks que no se si tiene algo que ver, la verdad es que voy perdido...

Gracias, un saludo

PepeFernandez

PepeFernandez


add info

Buenas estoy tratando de modificar el listado de productos le he dado este formato:
image.thumb.png.2b61a34be49b74980461508ad3071870.png

la idea es que el botón pedir muestra gratuíta, agregue el producto al carrito, el producto tiene una variante para ser muestra. he visto que dentro de la página del producto, para agregarla al carrito tiene como un formulario donde puedo poner la cantidad del producto que quiero y esas cosas.

La cosa es que hacer de cada botón un formulario no se si funcionará yo había pensado en una api, he creado en el apartado de webservice una api que me da acceso al carrito, pero no me aclaro mucho a conseguir que ande y creo que el error lo tengo en la ruta, este es mi javascript:

 

 /*AGREGAR MUESTRAS AL CARRITO DESDE CATÁLOGO*/

      $('.product-table-cell').on('click', function() {
         var productId = $(this).data('product-id');
         var apiUrl = '/api/carts'; 
         var apiKey = 'N9SIDBJSQ5RZ7CXYX354ACR759DAQF2Y'; 
         var cartId = $(this).data('id-cart');

         // Verifica si los datos están presentes
         if (!productId || !apiKey || !cartId) {
            console.error('Datos faltantes: productId, apiKey o cartId no están definidos');
            return;
         }

         // Datos del nuevo producto a añadir
         var newProduct = {
            "cart": {
               "associations": {
                     "cart_rows": [{
                        "id_product": productId,
                        "id_product_attribute": 0,
                        "quantity": 1
                     }]
               }
            }
         };

         fetch(apiUrl + '/' + cartId, {
            method: 'PUT',
            headers: {
               'Content-Type': 'application/json',
               'Authorization': 'Basic ' + btoa(apiKey + ':')
            },
            body: JSON.stringify(newProduct)
         })
         .then(response => response.text()) // Cambia a text() temporalmente para depuración
         .then(text => {
            try {
               const data = JSON.parse(text);
               if (data.id) {
                     console.log('Producto agregado con éxito');
               } else {
                     console.error('Fallo al agregar el producto', data);
               }
            } catch (e) {
               console.error('Error al parsear JSON:', e);
               console.error('Respuesta del servidor:', text);
            }
         })
         .catch(error => {
            console.error('Error en la solicitud:', error);
         });
      });

Alguien podría echarme una mano? ha hecho algún caso similar, pasar documentación, conoce la ruta correcta, me puede explicar o pasar información sobre los hooks que no se si tiene algo que ver, la verdad es que voy perdido...

Gracias, un saludo

Buenas estoy tratando de modificar el listado de productos le he dado este formato:
image.thumb.png.2b61a34be49b74980461508ad3071870.png

la idea es que el botón pedir muestra gratuíta, agregue el producto al carrito, el producto tiene una variante para ser muestra. he visto que dentro de la página del producto, para agregarla al carrito tiene como un formulario donde puedo poner la cantidad del producto que quiero y esas cosas.

La cosa es que hacer de cada botón un formulario no se si funcionará yo había pensado en una api, he creado en el apartado de webservice una api que me da acceso al carrito, pero no me aclaro mucho a conseguir que ande y creo que el error lo tengo en la ruta, este es mi javascript:

 

 /*AGREGAR MUESTRAS AL CARRITO DESDE CATÁLOGO*/

      $('.product-table-cell').on('click', function() {
         var productId = $(this).data('product-id');
         var apiUrl = '/api/carts'; 
         var apiKey = 'N9SIDBJSQ5RZ7CXYX354ACR759DAQF2Y'; 
         var cartId = $(this).data('id-cart');

         // Verifica si los datos están presentes
         if (!productId || !apiKey || !cartId) {
            console.error('Datos faltantes: productId, apiKey o cartId no están definidos');
            return;
         }

         // Datos del nuevo producto a añadir
         var newProduct = {
            "cart": {
               "associations": {
                     "cart_rows": [{
                        "id_product": productId,
                        "id_product_attribute": 0,
                        "quantity": 1
                     }]
               }
            }
         };

         fetch(apiUrl + '/' + cartId, {
            method: 'PUT',
            headers: {
               'Content-Type': 'application/json',
               'Authorization': 'Basic ' + btoa(apiKey + ':')
            },
            body: JSON.stringify(newProduct)
         })
         .then(response => response.text()) // Cambia a text() temporalmente para depuración
         .then(text => {
            try {
               const data = JSON.parse(text);
               if (data.id) {
                     console.log('Producto agregado con éxito');
               } else {
                     console.error('Fallo al agregar el producto', data);
               }
            } catch (e) {
               console.error('Error al parsear JSON:', e);
               console.error('Respuesta del servidor:', text);
            }
         })
         .catch(error => {
            console.error('Error en la solicitud:', error);
         });
      });

Alguien podría echarme una mano? ha hecho algún caso similar, pasar documentación,...

Gracias, un saludo

×
×
  • Create New...