Fernando Aguirre

Members
  • Content Count

    201
  • Joined

  • Last visited

  • Days Won

    24

Posts posted by Fernando Aguirre


  1. Mercadolibre va a tomar como recibida la notificacion cuando tu le respondes con un codigo 200, ahi dice en response que le respondiste con ese codigo, entonces ya no te va a volver a enviar esa notificacion.

    Esa informacion esta en la documentacion.


  2. 7 hours ago, C0C017_MF said:

    @mldev hay paginas que ofrecen tendencias y estadisticas de ML.

    Te puedo nombrar Nubemetric, que es una de las mas importantes. 
     

    Si hay metodos, pero la API no te los va a dar, si quieres por ejemplo, verificar las ventas de un vendedor en especifico, tendrias hacer web scrapping para obtener el numero de ventas al dia, pero es algo complicado de mantener porque ML cambia a cada rato esas cosas para que no hagan esas cosas.

    Y pueden decir que hay miles de  apps que hacen eso, pero nadie sabe sus metodos o como le hacen.

    Pero si te digo, con la API (con token o no) no se puede hacer lo que pides.


  3. Hola.

    Para desglosar los costos de envio de una orden teniendo el shipping id solo accesar a esta url

    https://api.mercadolibre.com/shipments/$ShippingId/costs?access_token=

    Y ahi, aplicando algo de logica, puedes saber si el envio le costo al comprador, si fue "gratis" y los descuentos que te aplicaron por tu reputacion.

    Por ejemplo:

    image.png.0ce40582ec4fe633ec461ed0ad10735e.png

    Ahi dice que el costo real del envio es de $379.99 y al comprador (receiver) no le costo, por lo que descartamos que era envio a cargo del comprador, ahora vemos que si le costo al vendedor, $189.99, donde obtuvo un descuento del 50% por su reputacion, y eso que dice type:mandatory, es porque el envio es "gratis" obligatorio (mandatory), entonces ahora podemos catalogar ese envio como "gratis".

    En ML hay 3 tipos de envio, 2 que si generan shippingId y otro que no. El que no se genra, obvio es cuando el envio es a cargo del comprador y en este no se crea ningun shippingId.

    El otro es cuando al comprador le cuesta y le aparece ese costo al momento de querer hacer la compra, donde no es obligatorio el envio gratis para ofrecerlo por el comprador, entonces este podriamos catalogarlo como envio normal.

    Y esta el envio gratis, que es donde se obliga al vendedor que lo ofrezca y a este mismo se le ofrece un descuento del valor real del envio, para amortizar costos, y a este lo podemos catalogar como envio gratis.

    Y toda esa informacion sale de ahi de la url que te pase. Solo tendrias que analizar varias ventas para que te quede claro y asegures que asi son los datos.

    Saludos.


  4. Hola

    En la API se encuentra la informacion y un ejemplo de la estructura del array que debes de enviar para que todo funcione correctamente.

    https://developers.mercadolibre.com.mx/es_ar/mensajeria-post-venta#Crear-mensajes

    Tu array puede que este mal estructurado y tambien estabas posteando a "/messages" y es "/messages/" creo que por eso te daba el error 500.

    Y como este post es del 2019 la mensajeria post venta cambio bastante la API.

    Saludos


  5. Hola, no habia regresado a este mensajes desde aquella vez que respondi hace como 2 años y aun sigue activo.

    Concuerdo con @mldev aqui el problema no es la API y la documentacion, si no que estan teniendo dudas tan basicas de programacion que la verdad nos hace dudar en si ayudar o no. Es decir todo bien, podemos ayudar, pero si nos dicen que gracias a que copiaron el codigo basico de prueba que les pusimos que con eso resolvieron su problema y que si podemos hacerles mas codigo, algo anda mal.

    Aqui creo que la mayoria se mete a resolver dudas y a pasar un buen rato, pero tampoco estamos para hacer el trabajo gratis, podemos dar ejemplos para sacarlos del apuro, pero ya implementar algo mas seguro y real para produccion, es parte de ustedes.

    Y por ejemplo, arriba de mi respuesta esta una pregunta que si como divide en parrafos un texto, puedes usar ciertos tags de html en el texto que enviar, por ejemplo, <br>, y con ese ya daras el brinco de parrafo. Y esto tal vez no esta en la API de ML pero lo aprendi a prueba y error, no hay de otra.

    Es el tema que le hemos dado mil vueltas, la API de ML no les va a dar todo en charola de oro jajajaja, hay que meterle algo de bussiness logic de nuestra parte.

    Saludos a todos.

     


  6. Hola.

    Vas a tener que hacer algo "fuera del librito" y algo que dirian "una cochinada" pero pues no siempre vas a poder tener todo como lo quisieras.

    La url donde recibiras las notificaciones de ML tiene que ser publica y la seguridad ya depende de lo que te imagines, y no de lo que diga el framework que uses.

    Por ejemplo, tienes que confirmar que esa info es para un usuario registrado en tu plataforma, eso es basico, con el user_id haces eso, tambien puedes verificar que el app_id concuerde.

    Por algun lado yo mismo publique los rangos de ip de los servidores que usa Mercadolibre para las notificaciones, tambien puedes crear un filtro que solo acepte requests de estas ips.

    A fin de cuentas es tu propio control de seguridad el que vas a crear, ya que mercadolibre no va a enviar a pedirte un token de autorizacion para tu sitio para que el despues te lo envie en cada notificacion que te mande. 

    De echo todas las notificaciones funcionan asi, paypal, woocomerce, stripe, mercadopago. Por ejemplo con paypal tienes que verificar que viene de ellos la notificacion.

    Entonces vas a tener que salirte un poco del standar, hacer algo "cochino" y crear tus propios controladores de seguridad, y pues yo me llevare un "tu no eres ingeniero por dar esos consejos" ajajjajaj como ya me han dicho por aqui. Pero todo lo que te comento es en buena vibra.

    Saludos.


  7. Hola Oscar.

    Esque lo que ML quiere evitar tambien es sobrecargar sus servidores, imaginate la infraestructura gifante que tienen con tanta informacion guardada, ademas no somos los unicos tu y yo consumiendo su API.

    Ellos quieren las cosas mas simples y que la "Bussines logic" corra por nuestra parte, te sañe mas barato a ti agregar un procesador mas o un 1gb de ram a tu servidor en la nube que gastar tiempo en algo que realmente no van a hacer porque tienen claro sus prioridades y limites.

    Igual tu servidor no va a tronar por hacer esa iteracion.

    Aqui siempre lo comento en los foros, la API de ML no esta diseñada para ahorrarnos logica en nuestro codigo, no nos va a dar NUNCA exactamente lo que queremos, eso ya depende de nosotros acomodar la informacion.

    Igual, la API es publica, gratis, es facil de accesar y usar, practicamente no estas gastando nada para obtener esta informacion valiosa, me parece justo que puedas gastar en agregar mas recursos a tu servidor para manejar la informacion a tu gusto.

    Saludos.


  8. Hola 

    ¿Cómo le hacen para poder distinguirlas, en especial las de 'meli' ya que existe el tag de 'mshops' pero no existe el tag de 'meli'? 

    Tu mismo lo has dicho, para distinguir una de mercadoshops, ya trae el tag mshop, si una orden lo tiene la catalogas como de mercadoshop y si no lo trae, entonces es una orden normal.

    Entonces tu iteras en todo el historial de ordenes, vas a poner algo asi:

    foreach($orders as $order){
    	if( in_array('mshops', $order->tags) ){
    		//La orden es de mshops
    	} else {
    		//La orden es normal
    	}
    }

    La verdad no se si a eso te referias, pero a eso se referian cuando te dijeron "eso haslo en tu codigo".

    Saludos


  9. Hola.

    No es un problema ni nada, es algo normal como te dijeron. Cuando es creada una orden, un item o lo que sea, en ML se ejecuta una serie de pasos hasta el momento en que ya queda definitivo el estado de "X" situacion, y esta serie de pasos generan notificaciones.

    Por ejemplo, es un ejemplo y no se si aplique a tu caso en especifico y solo te lo explico para que entiendas las notificaciones en la API de ML:

    Un comprador compra un producto, primer notificacion es de orden creada, la siguiente es de creacion del pago, la siguiente de la acpetacion/rechazo del pago, y por ultimo la creacion de un envio para esa orden, todo este ciclo sucede en 2 o 3 segundos, o en milisegundos y cada evento envia una notificacion, por lo que en un mismo instante puedes recibir 4 notificaciones seguidas de una misma orden.

    Como controlarlo? en tu codigo tienes que aplicar algun tipo de cola de espera o de procesamiento, para que si llego la primer notificacion, no tomar en cuenta las demas y descartarlas porque ya sabes que contienen la misma informacion.

    Saludos


  10. Hola.

    Mira lo que te recomiendo es que crees una API en tu servidor principal y de ahi redirecciones toda la informacion a cada dominio distinto de cada cliente.

     Y como dice MlDev, no debes de crear una app por cada cliente, solo crea una.

    O no tanto una API en tu servidor, si no que toda la informacion te llegue a tu servidor, y de ahi la reenvies a los sitios personales de cada cliente, que los vas a identificar por sus userId de ML, en tu base de datos tendras algo como cliente - dominio - ml_user_id 

    No es tan complejo el asunto, solo es ponerse a dibujar la estrategia en papel para que todo funcione.

     

    Saludos


  11. On 4/16/2020 at 9:27 AM, mldev said:

    Solo para esto? 

    se és "mejor" porque no trae tu solución?

    @Fernando Aguirre siempre colabora con el forum, y usted? tienes solamente criticas o tienes soluciones?

     

    ps.: te quejas de hacer un "hack" en uno framework (que ya és un "hack" de la language)? 😂

    Gracias amigo.

    Si claro, cada quien trabaja con su framweork favorito, laravel, codeigniter, cake, symfony y entre otros. Pero tampoco hay que ponerse tan roñosos cuando no existe una solucion a su medida y si no existe pues habra que crearla y mantenerla. Pueden agarrar el SDK de ML adaptarlo a los PSRs, subirlo a github y  utilizarlo con composer y listo, ya sirve para su flujo de trabajo.

    Y la verdad si uso symfony pero a veces las cosas se ponen complicadas y necesitas salir del apuro con algo rapido, facil y "cochino", entonces tienes que usar ciertas cosillas que no son algo estandarizado.

    Saludos y feliz programacion.


  12. Hola.

    Recientemente eliminaron el shipping_services de la API, que basicamente era el listado de las paqueterias con sus nombres y links para rastreo.

    Ahora como puedo obtener el nombre de la paqueteria? En la api de shipments sale unicamente el el tracking_method pero a veces sale informacion correcta y otras veces no.

    Cual es la forma viable y segura para saber el nombre de la paqueteria ahora?

    Y como siempre ML no sabe ni que onda cuando les preguntas, me comunique al soporte y nomas me respondieron "si es correcto, esa parte de la API se va a eliminar" pero eso no es una solucion.

    Saludos


  13. On 6/13/2019 at 11:18 AM, siherrera said:

    Gracias por la respuesta, pero los que usamos laravel debemos seguir la forma en como funciona el framework. Mas cuando implementamos librerias pensadas para lavarel que se instalan via composer en la carpeta vendor.

    Perfecto, pero hay veces en que simplemente tienes que dar una solucion facil y dejar de complicar las cosas, por eso somos ingenieros, para facilitar la vida, no para complicarla mas y un pequeno hack no creo que deshaga todo el proyecto. 

    Saludos.


  14. Hola amigos, hoy me llego este correo:

    image.thumb.png.5d7229942ebf9ff623fef66f65a96064.png

    Solo que me da un poco de miedo, va a dejar de funcionar la mensajeria post venta por medio de la API? si esto es realidad, no lo veo con buenos ojos, porque no nos preguntan nada a los developers ni trabajan junto con nosotros para poder resolver esto de otra manera. Quitar la mensajeria postventa por causas ajenas a nosotros (nuestros usuarios de plataforma por ejemplo) no parece una solucion viable.

    Porque no trabajamos juntos en dar otra solucion? Con gusto podria trabajar junto con ustedes para evitar que se elimine la mensajeria post venta, sobre todo porque mi plataforma depende un 60% de la mensajeria postventa.

    Saludos


  15. Hola.

    Lo siento amigo, este foro es solo para soporte de la API, este es un SDK no oficial, tendrias que preguntar en el repositorio directamente a los creadores.

    Y si solo puedes ver cosas publicas, necesitas primeramente obtener el token, guardarlo en base de datos y pedir uno nuevo cada 6 horas. Eso es lo que falta para obtener datos privados. Leete los API Docs la seccion de autorizacion y permisos.

    Si se te pone muy complicado y no te contestan, usa el SDK de php normal y vas a tener menos problemas.

    Saludos


  16. Hola.

    La forma mas facil es que incluyas el archivo "meli.php" en el boot de laravel, o en tus views que lo ocupen.

    Algo asi como:

    require_once (base_path().'/app/Http/Mercadolibre/meli.php');//ML SDK.
    $mlSession = new Meli( env('APP_ID'), env('APP_SECRET'), $token);

    Asi te evitas inventarte algo desde cero o investigar como funciona el paquete, es lo que hago cuando ya se pone muy complicada la cosa con el laravel.

    Saludos.


  17. Hola.

    En el logistics_type va a decir "self_service" y creo que primero tienes que registrar tu tipo de envio con ML, es lo que me he dado cuenta en el listado de shipping services que da ML, donde aparecen paqueterias custom. Supongo que es un proceso que se debe de llevar a cabo antes de poder hace modificaciones asi nomas.

    Desconozco tu caso, si nos dieras mas informacion, podrias ayudar. 

    Saludos