Fernando Aguirre

Members
  • Content Count

    201
  • Joined

  • Last visited

  • Days Won

    24

Posts posted by Fernando Aguirre


  1. Hola

    Creo que tienes un error aqui:

    $ship=$itemventas['json']['shipping']['id'];

    Deberia ser, ya que la respuesta te la da en el 'body' no existe ningun objecto que se llame 'json'

    $ship=$itemventas['body']->shipping->id;

    No uses el SDK para obtener la guia, usa la direccion directamente

    $guia = 'https://api.mercadolibre.com/shipment_labels?shipment_ids='.$ship.'&response_type=pdf&access_token='.$token

    Saludos.


  2. On 7/21/2018 at 7:17 AM, Ricardo Infante said:

    Hola, no lo obtienes directo de la notificación, te vas al recurso que viene siendo el número de orden. Ejmp:

    $data = json_decode(file_get_contents('php://input'), true);//Con esto atrapas la informacion que te envia ML
    $resource = $data['resource']; //Aqui creas tu variable que contiene el resource

    $meli = new Meli($appId, $secretKey, $token); //Crea la sesion de ML
    $params = array('access_token' => $token);
    $order_data = $meli->get($resource, $params);//Haces un GET a la API para obtener los datos de la orden


    $order_data_buyerid = $order_data['body']->buyer->id;
    $order_data_id = $order_data['body']->id;


    //SACAMOS MAS DATOS DE LA ORDEN

    $urlorden = '/orders/'.$order_data_id.'';
    $orden = $meli->get($urlorden, $params);

     

    En la variable $orden están todos los atributos de la orden. Si quieres sacar el nombre del cliente sería algo así: 

    //nombre de comprador
    $first_name = $orden['body']->buyer->first_name;
    $last_name = $orden['body']->buyer->last_name;
    $nombre_comprador = $first_name .' '. $last_name;
     

     

     

    Hola, 

    Estas llamando a la API dos veces a lo mismo, tu urlorden es lo mismo que el resource.

    Generalmente el resource te dice a que objeto llamar en la api, por ejemplo $resource = '/orders/14848394' y eso te lo envia la misma notificacion.

    Analiza un poco el codigo amigo y trata de visualizar y entenderlo un poco mas.

    Saludos


  3. Hola, yo si lo implemente para una herramienta que ando probando.

    Lo que hago es guardar cada orden, y en otra columna pongo el shipping_id entonces, hago un foreach, y creo un array donde se crean objetos con el shipping id, por lo que si este se repite, se van a guardar todas las ordenes dentro de ese objeto, algo asi:

    array (
    	"121212121" => array ( todos los orders id referentes al shipping id),
    	"122222222" => array ( todos los orders id referentes al shipping id),
    	"333333333" => array ( todos los orders id referentes al shipping id),
    		.
    		.
    		.
    		.
    		.
    	)

    Y ya de esta manera agrupo las ventas que son de carrito.

    Ahorita no tengo una venta con carrito, en cuanto tenga una venta te muestro como agrupo la informacion en la plataforma. 

    Esa fue la manera mas facil que encontre, sin que se pusiera tan compleja la cosa.

    Saludos!


  4. Hola.

    Tu tienes que definir tu estructura, la API de ML te va a brindar la informacion basica de las ordenes y demas, ya lo que tu quieras hacer con esta informacion es tu decision, por lo tanto como manejarla tambien.

    Utiliza algo que te haya funcionado antes y dependiendo del resultado final que ocupes, adapta la estructura.

    ML te va a dar la informacion en formato JSON, ahi tu sabras como guardar esa informacion y extraer lo que realmente necesitas. 

    Recuerda activar las notificaciones para que puedas recibir actualizaciones de productos, ordenes y demas.

    Saludos!


  5. Hola, concuerdo con Woomelly, me inclino mas por un problema con tu servidor.

    Si tienes activadas las notificaciones, de forma que no te vas a dar cuenta, ML te va a estar bombardeando con notificaciones constantemente, y si estas alojado en un web hosting shared, a los que ofrecen el servicio no les va a gustar esto, y van a empezar a bloquear temporalmente las ip de ML, a fin de cuentas ellos no saben que son primordiales para ti, o de igual manera, simplemente tienen filtros.

    De igual manera si utilizas algun servicio como cloudfare, incluye el rango de IPs en el white list, para que no las bloqueen. Por ahi en algun hilo del foro publique el rango de IPs.

    Es recomendable que utilices un VPS para tu herramienta, de esta manera tu controlas la mayoria de los filtros, seguridad y demas, y tu herramienta no dependera de alguien mas que solo se enfoca en cosas basicas y generales.

    Yo siempre les digo a todos que la API de ML no es la que falla, en algunos casos puntuales si, si no lo que falla es nuestro codigo o servidor.

    Saludos!


  6. Hola.

    Woomelly tiene razon, supongo que esa informacion la bloquearon y generalizaron porque basicamente podias saber cuanto estaba vendiendo tu competencia, y la verdad esa informacion en las manos incorrectas, es un peligro.

    Como vendedor, me parece excelente esta informacion, pero como developer que desarrolla una herramienta para analizar a la competencia, si destrozo cualquier posibilidad jajaja.

    Saludos!


  7. Hola. 

    A veces ML no da informacion en la API, creo que tienes que calcular esa informacion tu, es facil, guarda esa info en una base de datos, la fecha de cracion y la de respuesta, y con algun pequeño script haces el calulo, y listo.

    Te recuerdo que la API te va a dar la informacion basica para que tu la manipules de acuerdo a lo que necesitas, porque si no, se iba a volver muy compleja porque tendria que hacer lo que cada developer necesita.

    Saludos!


  8. Hola de nuevo.

    Creo que esa informacion no te la va a dar directamente, tendras que combinar datos y llamadas a la API, por ejemplo:

    Orders y shipments

    Si te refieres a orden que no ha sido cancelada, entonces te vas por el status, todo lo que no sea "cancelled" significa que la orden se encuentra abierta.

    Ahora si te refieres a una orden que aun no ha sido entregada o que aun no ha sido procesada, guiate por el shipment status y substatus, esto con la api de shipments, todo lo que no sea "delivered" significa que la orden aun sigue en proceso o abierta.

    Otro mas, aunque ya menos comun porque ML no obliga a que califiques al vendedor, seria guiarte con el feedback, si aparece informacion en este apartado por parte del comprador, la venta ya ha sido terminada.

    Guiate por los status, ya que ahi te va a decir si esta en reclamo o cancelada, o combina informacion para tener mas certeza.

    Mira, esta API de ML te va a dar informacion basica, la suficiente para que pongamos a trabajar nuestras mentes para manipularla, generalmente ML no va a darnos lo que queremos, y es entendible porque existe un mundo de informacion en esa API, y ponerse a crear filtros especificos seria algo tedioso.

    Te recomiendo que guardes la informacion en tu base de datos, y por medio de las notificaciones actualices la informacion como el status y demas cosas relevantes que consideres que podrian ayudarte.

    En la documentacion vienen los status de las ordenes, no viene en forma de lista si no muy mal acomodada en un parrafo, buscale para que consideres todos los estados posibles.

     

    Saludos!


  9. Trata de mejorar tu flujo de trabajo, guarda la informacion que nunca cambia en tu base de datos.

    Y utiliza las notificaciones para que se actualice cada item cuando exista un cambio. La verdad no es eficaz que tengas que estar cargando tanta informacion desde la API cada vez que haces refresh tu aplicacion. guarda la informacion localmente y utiliza una base datos, eso te va a ser mas eficaz y rapido de cargar la informacion.

    Tambien puedes utilizar un cronjob para actualizar todos los items a una hora en la madrugada, o simplemente usar las notificaciones.

    Saludos.


  10. Hola buen dia.

    EN cualquier momento algun moderador te dira lo siguiente:

    "Este es un foro para ayudarnos entre los developers en referencia a la API de Mercadolibre, no a woocommerce ni a sus plugins"

    Entonces, te recomiendo que contactes a los creadores del plugin para woocommerce que usas. Tambien te comento que el problema nunca va a ser la API, siempre sera nuestro codigo, en casos muy especiales si sera la API. Tal vez cambiaron algo y los creadores del plugin no se han dado cuenta. 

    Saludos! 


  11. No te compliques mucho con lo de Postman Pedro.

    Mejor crea un cronjob para estar haciendo refresh al token, va a ser mas complicado enrollarte a implementar postman, si con unas simples lineas de codigo puedes hacer refresh con php, o node o cualquier SDK que uses. Ve directamente al cron, eso te recomiendo.

     

    Saludos y un gusto ayudarte!


  12. Has intentado usar postman para hacerlo manualmente antes? Descargalo y haces un post a api.mercadolibre.com/items/

    Y de echo creo que tu error esta en el post del sdk

    $response = $meli->post('/items', $item, array('access_token' => $_SESSION['access_token']));
    
    Y debe de ir asi:
    
    $response = $meli->post('/items/', $item, array('access_token' => $_SESSION['access_token']));

    El SDK ni Mercadolibre son los del problema, nosotros somos los que tenemos mal el codigo.

    Por favor revisen su codigo, una coma o una barrita no amerita abrir un hilo en el foro.

     

    Saludos