Fernando Aguirre

Members
  • Content Count

    186
  • Joined

  • Last visited

  • Days Won

    21

Reputation Activity

  1. Like
    Fernando Aguirre got a reaction from mldev in no entiendo cómo agregar otro producto a mi catalogo   
    Hola.
    Por favor evita este tipo de post como si estuvieras hablando con tu amigo en whatsapp. Esto no es un chat.
    Un saludo nos viene bien a todos, asi como mayor informacion de lo que estas haciendo y como lo haces.
    Pir que dices que no te deja publicar mas de un producto? Te da algun error la API? Estas creando un array con los productos e iteras a travez de este para que vaya publicando cada producto en cad iteracion?
    Nada que un for o un foreach no solucione.
    Saludos
  2. Like
    Fernando Aguirre got a reaction from Danny Fernández in Límite de llamadas a la API de Mercado Libre   
    Hola.
    En la api, hay un GET para obtener la informacion de tu app, y ahi dice el limite por hora, que son alrededor de 8k de llamadas comi limite.
    Pero supongamos que haces esas 4800 llamadas en 1 minuto, te van a bloquear porque ML va a pensar que estas spameando.
    Pon por ahi algun sleep de 1 segundo entre cada producto que actualizas, a la mejor va a tardar, pero no te van a mandar a la lista de spammers.
    Saludos
  3. Confused
    Fernando Aguirre got a reaction from OscarRocha in Problemas con token   
    Hola buen dia.
    El dia de hoy 1 de Marzo de 2019 me desperte con un problemon, resulta que los permisos de todos los usuarios de mi app no se habian hecho refresh con el daemon que tengo.
    Hubo algun problema con Mercadolibre y los permisos para obtener los tokens? Sucedio mas o menos a las 12:20 am (hora de cd de mexico).
    Lo bueno que se soluciono en la mayoria de los casos volviendo a pedir el token, pero en algunos si se tuvo que realizar lo de revocar permisos y volverlos a permitir.
    A alguien mas le sucedio?
    Saludos
  4. Like
    Fernando Aguirre got a reaction from mldev in ¿Que son los URL de Redirect URL (en Autenticación y seguridad) y en Notificaciones callbacks URL (de Configuración de notificaciones)?   
    Hola.
    Para poder obtener los permisos necesarios tu tienes que especificar una url que sea segura para ti y donde ML tendra el permiso de enviar el token de autorizacion.
    El url de notificaciones, es eso mismo, una url donde ML te enviara notificaciones de los distintos eventos que sucedan en tu cuenta.
    Y si, hasle caso e mldev.
    Y otra cosa, aqui con gusto te ayudamos con temas especificos y en casos donde ya sea tu ultima opcion pedir ayuda, para cosas tan basicas, estan los API docs y google. Primero entiende los conceptos basicos de lo que quieres hacer y luego ya lo haces.
    Saludos
  5. Like
    Fernando Aguirre got a reaction from rodrigojob in no entiendo cómo agregar otro producto a mi catalogo   
    Hola.
    Por favor evita este tipo de post como si estuvieras hablando con tu amigo en whatsapp. Esto no es un chat.
    Un saludo nos viene bien a todos, asi como mayor informacion de lo que estas haciendo y como lo haces.
    Pir que dices que no te deja publicar mas de un producto? Te da algun error la API? Estas creando un array con los productos e iteras a travez de este para que vaya publicando cada producto en cad iteracion?
    Nada que un for o un foreach no solucione.
    Saludos
  6. Like
    Fernando Aguirre got a reaction from DAM_RICO in Problema con las notificaciones SDK PHP   
    Hola.
    Antes que nada, no es problema del SDK de php, ni de las notificaciones ni nada de ML, es algo mas enfocado a tu logica de codigo.
    Te van a venir a decir que aqui es solo ML y no MP, pero bueno.
    ML al generar una orden va a enviar vairas notificaciones en un periodo de unos 10 a 20 segundos, puede enviarte hasta unas 5 a 10 distintas. Esto es debido a que se actualiza el status de la orden en sus diferentes pasos a seguir (pago, aprobacion de este, generacion del envio, generacion de guia de envio, etc) por lo que ya depende de tu script controlar la informacion que recibes.
    Te recomiendo utilizar algun sleep, crear una cola en tu BD, las columnas de order id o payment id hacerlas unicas para que no tengas informacion repetida, etc.
    El SDK es solo un puente entre la API y tu sistema y tu simplemente tienes que manejar bien la informacion que recibes.
    Y no quiero que sientas que fui grosero, de ninguna manera es mi cometido. Pero si van a venir a decirte que este no es un foro de Mercadopago.
    Creo que en google tienen un foro de soporte.
    Saludos
  7. Thanks
    Fernando Aguirre got a reaction from mldev in SKU   
    Hola
    Creo que tienes que agregar ?attributes=all o algo por el estilo para que te salga la informacion adicional.
    Le los docs de la api, ahi se explica lo del sku.
    Saludos
  8. Like
    Fernando Aguirre got a reaction from mldev in Búsqueda de pedidos por carrito   
    Hola.
    He descubierto otras maneras de diferenciar ordenes con carrito.
    - En los tags de la orden se agregara uno que se dice "pack_order".
    - Si consultas "/shipments/$shipId/items?access_token=xxxxxxxxxxxxxxxxxxxx" vas a obtener todos los items del carrito, y tambien, lo mejor de todo, todas los numero de ordenes referentes a ese shipping id, aqui esta la clave!
    Tambien para diferenciar si un envio es "gratis", pueden utilizar el resource:  "/shipments/$shipId/costs?access_token=xxxxxxxxxxxxxxxxxxxx" y si en senders donde se encuentra el id del vendedor, y el costo es mayor que cero, entonces fue "envio gratis" y si en la parte de buyer, el costo es 0 tambien es como alternativa para determinarlo como "gratis".
     
    Actualizacion 21 febrero 2019
    Otra mas, se acuerdan que en las ordenes de carrito aparece un numero de orden extraño, algo como 20000xxxxxxxxxxxxxx, hoy me di cuenta que en la API aparece este numeor bajo el nombre de pack_id. Puede servir como referencia de igual manera.
    Saludos
  9. Like
    Fernando Aguirre got a reaction from mldev in Actualización masiva   
    Hola.
    Lo que se referia Mldev es que no es posible por medio de la API.
    Lo que si es posible es que tu desarrolles eso, que tu script procese un archivo csv y postee todas las actualizaciones.
    Ya simplemente procesas la informacion y dejas que funcione el script. Ten en cuenta que son bastantes publicaciones y hacerlo todo de una sola vez podria causar algun tipo de error. Ya depende de ti como aplicar controles para que sean procesadas, delays, filtros, yo que se.
    Saludos
  10. Thanks
    Fernando Aguirre got a reaction from Jorge Galvez in Impresion, envio API   
    Hola.
    Como ya lo he dicho antes, no esperes que la API te resuelva la vida.
    Guarda la informacion de la orden en tu base de datos, utiliza las notificaciones y asi controlas los diferentes estados de la orden.
    Cada vez que te llegue una notificacion actualizas la orden en tu base de datos.
    La guia la vas a poder imprimir hasta que el estado sea "ready_to_ship"
    Saludos
  11. Thanks
    Fernando Aguirre got a reaction from mldev in Limite de caracteres   
    Hola.
    Ayer me di cuenta de algo por medio de un cliente, la API de ML tiene un limite de 3500 caracteres por mensaje post venta.
    Se los comento para que esten enterados.
    Saludos
  12. Thanks
    Fernando Aguirre got a reaction from KaisarCode in Nombres de dominio por pais   
    Hola amigos.
    Les comparto los diferentes nombres de dominio para los diferentes siteId de ML
    $domains = array(//Array with domain names from siteId => Domain 'MLA' => 'com.ar',//Argentina 'MBO' => 'com.bo',//Bolivia 'MLB' => 'com.br',//Brasil 'MLC' => 'cl',//Chile 'MCO' => 'com.co',//Colombia 'MCR' => 'co.cr',//Costa Rica 'MRD' => 'com.do',//Dominicana 'MEC' => 'com.ec',//Ecuador 'MHN' => 'com.hn',//Honduras 'MGT' => 'com.gt',//Guatemala 'MLM' => 'com.mx',//Mexico 'MNI' => 'com.ni',//Nicaragua 'MPY' => 'com.py',//Paraguay 'MPA' => 'com.pa',//Panama 'MPE' => 'com.pe',//Peru 'MSV' => 'com.sv',//Salvador 'MLU' => 'com.uy',//Uruguay 'MLV' => 'com.ve'//Venezuela ); //Como usar para dirigir al usuario a su cuenta de ML $siteId = 'MLM'; $domain = $domains[$siteId]; $url = 'https://myaccount.mercadolibre.'.$domain; Y claro, tienen que guardar informacion basica de su usuario en su DB, como por ejemplo el siteId, entre otros. 
    De esta manera su app puede ser mas dinamica conforme a los paises donde la pueden usar, por ejemplo.
    Saludos!
  13. Like
    Fernando Aguirre got a reaction from Jorge Galvez in Notificaciones repetidas   
    Hola.
    Saben cual es la mejor solucion? En su DB guarden siempre el id de la orden y lo que quieran controlar, y ala columna del order id configurenla para que sea unica, asi no se repetira nunca la misma orden, era algo tan facil.
    Como siempre el order id son puros numeros, esta miy facil asi.
    Igual sigo usando sleeps aleatorios para mayor seguridad. Igual no dependan solamente de las notificaciones, es miy mala practica no estar guardando informacion en la DB, de perdida guarden el ID para que tengan un control interno.
    No es error de ML, simplemente asi funciona ML, el error esta en nosotros al creer que la API va a hacer nuestro trabajo.
    Saludos y a pensarle mucho para poder resolver porblemas.
  14. Like
    Fernando Aguirre got a reaction from juvian in Ahora deberás utilizar el recurso myfeeds con Access token   
    Hola, me llego este correo, para que todos esten enterados.
    https://developers.mercadolibre.com.ar/es_ar/productos-recibe-notificaciones?utm_source=promotional_emails&utm_medium=email&utm_campaign=sports#Recurso-historial-de-Feeds
    Ahora deberás utilizar el recurso myfeeds con Access token   Recuerda que este recurso es utilizado para validar la recepción de las notificaciones que estás suscrito. 
     
  15. Like
    Fernando Aguirre got a reaction from Oscar Developer in Forma rápida de descargar TODOS los productos?   
    Hola.
    Asi es, esta API esta muy basica, te ponen la informacion mas basica y nosotros ya hacemos las maravillas con ella.
     
    Saludos
  16. Thanks
    Fernando Aguirre got a reaction from mldev in Retiro de dinero   
    Me autorespondere:
     
  17. Thanks
    Fernando Aguirre got a reaction from OscarRocha in Obtener Access Token sin pasar por un web browser   
    Hola!
    Yo tenia la misma duda, y fue algo tan facil, que hasta me dio risa al final
    1 - Obten el ACCESS TOKEN y REFRESH TOKEN por primera vez con el ejemplo que viene en "example_login.php" del SDK de PHP.
    2 - Guarda estos dos datos en tu Base de datos
    3 - Ahora solo pones un Daemon que este cada 5 horas actualizando el token, usando el refresh token. Cuando hagas lo anterior, la API te va a devolver un ACCESS TOKEN y REFRESH TOKEN totalmente nuevos, ya solo sustituyes estos por los viejos que tenias y ya.
    function new_token ($appId, $secretKey, $token, $r_token,$con_token){ $ml_session = new Meli($appId, $secretKey, $token, $r_token); $refresh_tokn = $ml_session->refreshAccessToken(); $new_token = $refresh_tokn['body']->access_token; $new_refresh_token = $refresh_tokn['body']->refresh_token; if (empty($new_token)){ return true; } else { $query_guarda_token = "UPDATE datos SET tokn = '".$new_token."', refresh = '".$new_refresh_token."', ultima = NOW() WHERE usuario = 'xxxxxxxxxx'"; mysqli_query($con_token, $query_guarda_token); return false; } } $res = new_token ($appId, $secretKey, $token, $r_token, $con_token); while ($res){ $res = new_token ($appId, $secretKey, $token, $r_token, $con_token); sleep(10); }; 4 - Cada vez que ejecutes un script, haces una llamada a tu BD y "jalas" el token y facilmente realizas cualquier consulta a la API automaticamente.
    Esto yo lo tengo funcionando asi, tengo un daemon que me actualiza el token, luego otro que me guarda las visitas diarias de mis publicaciones. Aparte, este metodo te permite realizar cosas automaticas al recibir alguna notificacion, por ejemplo guardar toda la informacion que realmente te importe de una order recien creada, mandar un mensaje de agradecimiento, lo que se te ocurra.
    Creo que con esto te he brindado un camino, ya la programacion es pan comido teniendo la logica del funcionamiento.
    ACTUALIZACION 5 MARZO 2018 
    Tenia problemas porque a veces me daba error y no se rneovaba el token, por lo que mejor hice una funcion para que detecte si se obtuvo alguna respuesta por parte de ML, si no hay respuesta, se va a volver a pedir el token al esperar 10 segundos, y asi hasta que se obtenga un token nuevo.
     
    Te deseo un excelente dia!
  18. Like
    Fernando Aguirre got a reaction from DXRACER ARGENTINA in Error al modificar Stock.   
    Por variante ha de ser ese limite
  19. Thanks
    Fernando Aguirre got a reaction from OscarRocha in Obtener el code para la generacion del token con node js.   
    Hola buen dia
    1- ¿Existe forma de obtener el código automáticamente, sin intervención del usuario solo con su id y Secret key?
    No, es necesario que el usuario de los permisos para poder usar tu APP, una unica vez, y cuando lo haga guardas el token y el refresh para que ya no sea necesario que vuelva a autorizar y obtener el token.
    2 - además de la técnica del cron job para refrescar el token, que otra técnica se podría utilizar del lado del servidor para acceder a los recursos privados de ML?
    Ninguna, los recursos privados, son privados, solo puedes accesar a ellos por medio de un token. Y la forma mas eficaz y sin problemas es usar el cronjob para estar actualizando el token, asi no se lo dejas al usuario y tu sistema funcionara en automatico.
    3 - Esta es más por desconocimiento de la API, ¿para el caso de las notificaciones es necesario algún tipo de autenticación, o solo con la configuración del endpoint que las recibirá basta?
    En tu endpoint manerajas la notificacion con la informacion que te brinda, ya aqui es donde tu "pediras" informacion a ML con el SDK.
    4 - Como puedo obtener el JSON que me llega de la notificación?, me refiero a si llega algo como body.data o algo similar.
    ML te envia la informacion en un POST, verifica la documentacion de Node para ver como obtener la informacion de un post.
    5 - cuando se crea la aplicación, en la opción de tópicos, cual es la diferencia entre orders y orders_v2. y cual es aconsejable utilizar?
    El orders_v2 es el que funciona actualmente en ML. Lee la documentacion, ahi vienen las diferencias.
    Creo que te hace falta leer un poco mas y entender un poco mas. No pasa nada, a todos nos pasa.
    Saludos!
  20. Thanks
    Fernando Aguirre got a reaction from Nicolas Ferrazzuolo in Rango de ip de mercadolibre   
    Hola buen dia.
    Estaba leyendo las buenas practicas de la API de mercadopago, y al final incluyen el rango de IPs desde donde mandan las notificaciones. Trate de buscar esta misma informacion en los API DOCS de mercadolibre pero no la encontre.
    Alguien sabe el rango de IPs desde las cuales mercadolibre manda las notificaciones? Esto para agregar mayor seguridad y evitar ataques de personas que no tienen nada que hacer. 
    Estos son los rangos de ip que dan en mercadopago
    209.225.49.0 - 209.225.49.255 216.33.197.0 - 216.33.197.255 216.33.196.0 - 216.33.196.255 63.128.82.0 - 63.128.82.255 63.128.83.0 - 63.128.83.255 63.128.94.0 - 63.128.94.255 He estado jugando con la api de MP y veo que comparten la informacion esencial, como tokens, app id y demas, podria ser posible que tambien se envien las notificaciones desde las mismas IPs?
    Me puse a ver el whois de algunas IP,  como 10, y todas eran propiedad de mercadolibre, por lo que podria ser posible lo anterior.
    Como digo, es por seguridad, yo podria estar si nada que hacer, tomar la prueba gratis de una app, y simplemente jugar con las urls un rato, porque supongo que un gran fallo de seguridad seria que la url donde reciban sus notificaciones sea "https://app.com/notificaciones.php" o "https://app.com/notificaciones/notificaciones.php" y si no hay algun bloqueo tipo de bloqueo, como con estas ips, podrian enviar informacion falsa, o hacer un ataque masivo de request hasta destrozar el servidor, algo asi por el estilo.
    Saludos!
     
    + + + + + + + + + + + ACTUALIZACION 
    Habia levantado un ticket de soporte, y me respondieron satisfactoriamente!
    ["{bloque : 209.225.49.0/24}", "{bloque : 216.33.197.0/24}", "{bloque : 216.33.196.0/24}", "{bloque: 63.128.82.0/24}", "{bloque : 63.128.83.0/24}", "{bloque : 63.128.94.0/24}"] 216.33.196.4 y 216.33.196.25 Al parecer son las mismas IPs, solo que en ML utilizan un rango mas bajo que en MP, esperemos que con esta informacion podamos proteger aun mas nuestras apps.
    Y ahora, como hacemos un filtro basico?
    $allowlist = array( '209.225.49', '216.33.197', '216.33.196', '63.128.82.', '63.128.83.', '63.128.94.' ); foreach ($allowlist as $key=>$ip){ if(strncmp($ip, $_SERVER['REMOTE_ADDR'], 10) === 0){ die('Ip out of range.'); } }; Simplemente ponemos los rangos de IP en un array, y hacemos un string comparison, si el que ejecuta el script no esta dentro de ese rango, adiosito.
    Saludos!
  21. Thanks
    Fernando Aguirre got a reaction from Nicolas Ferrazzuolo in Consulta de Datos de Facturacion de un User   
    Hola
    Me llego un correo con informacion para facturacion, pero no sirve para Mexico, por si eres de aqui:
    https://developers.mercadolibre.com/es_ar/facturacion
    Es esa informacion que esta en la documentacion de la API pero se les olvida publicarla.
    Saludos y una disculpa 
  22. Thanks
    Fernando Aguirre got a reaction from mldev in Nombres de dominio por pais   
    Hola amigos.
    Les comparto los diferentes nombres de dominio para los diferentes siteId de ML
    $domains = array(//Array with domain names from siteId => Domain 'MLA' => 'com.ar',//Argentina 'MBO' => 'com.bo',//Bolivia 'MLB' => 'com.br',//Brasil 'MLC' => 'cl',//Chile 'MCO' => 'com.co',//Colombia 'MCR' => 'co.cr',//Costa Rica 'MRD' => 'com.do',//Dominicana 'MEC' => 'com.ec',//Ecuador 'MHN' => 'com.hn',//Honduras 'MGT' => 'com.gt',//Guatemala 'MLM' => 'com.mx',//Mexico 'MNI' => 'com.ni',//Nicaragua 'MPY' => 'com.py',//Paraguay 'MPA' => 'com.pa',//Panama 'MPE' => 'com.pe',//Peru 'MSV' => 'com.sv',//Salvador 'MLU' => 'com.uy',//Uruguay 'MLV' => 'com.ve'//Venezuela ); //Como usar para dirigir al usuario a su cuenta de ML $siteId = 'MLM'; $domain = $domains[$siteId]; $url = 'https://myaccount.mercadolibre.'.$domain; Y claro, tienen que guardar informacion basica de su usuario en su DB, como por ejemplo el siteId, entre otros. 
    De esta manera su app puede ser mas dinamica conforme a los paises donde la pueden usar, por ejemplo.
    Saludos!
  23. Thanks
    Fernando Aguirre got a reaction from Woomelly in Nombres de dominio por pais   
    Hola amigos.
    Les comparto los diferentes nombres de dominio para los diferentes siteId de ML
    $domains = array(//Array with domain names from siteId => Domain 'MLA' => 'com.ar',//Argentina 'MBO' => 'com.bo',//Bolivia 'MLB' => 'com.br',//Brasil 'MLC' => 'cl',//Chile 'MCO' => 'com.co',//Colombia 'MCR' => 'co.cr',//Costa Rica 'MRD' => 'com.do',//Dominicana 'MEC' => 'com.ec',//Ecuador 'MHN' => 'com.hn',//Honduras 'MGT' => 'com.gt',//Guatemala 'MLM' => 'com.mx',//Mexico 'MNI' => 'com.ni',//Nicaragua 'MPY' => 'com.py',//Paraguay 'MPA' => 'com.pa',//Panama 'MPE' => 'com.pe',//Peru 'MSV' => 'com.sv',//Salvador 'MLU' => 'com.uy',//Uruguay 'MLV' => 'com.ve'//Venezuela ); //Como usar para dirigir al usuario a su cuenta de ML $siteId = 'MLM'; $domain = $domains[$siteId]; $url = 'https://myaccount.mercadolibre.'.$domain; Y claro, tienen que guardar informacion basica de su usuario en su DB, como por ejemplo el siteId, entre otros. 
    De esta manera su app puede ser mas dinamica conforme a los paises donde la pueden usar, por ejemplo.
    Saludos!
  24. Thanks
    Fernando Aguirre got a reaction from OscarRocha in Rango de ip de mercadolibre   
    Hola buen dia.
    Estaba leyendo las buenas practicas de la API de mercadopago, y al final incluyen el rango de IPs desde donde mandan las notificaciones. Trate de buscar esta misma informacion en los API DOCS de mercadolibre pero no la encontre.
    Alguien sabe el rango de IPs desde las cuales mercadolibre manda las notificaciones? Esto para agregar mayor seguridad y evitar ataques de personas que no tienen nada que hacer. 
    Estos son los rangos de ip que dan en mercadopago
    209.225.49.0 - 209.225.49.255 216.33.197.0 - 216.33.197.255 216.33.196.0 - 216.33.196.255 63.128.82.0 - 63.128.82.255 63.128.83.0 - 63.128.83.255 63.128.94.0 - 63.128.94.255 He estado jugando con la api de MP y veo que comparten la informacion esencial, como tokens, app id y demas, podria ser posible que tambien se envien las notificaciones desde las mismas IPs?
    Me puse a ver el whois de algunas IP,  como 10, y todas eran propiedad de mercadolibre, por lo que podria ser posible lo anterior.
    Como digo, es por seguridad, yo podria estar si nada que hacer, tomar la prueba gratis de una app, y simplemente jugar con las urls un rato, porque supongo que un gran fallo de seguridad seria que la url donde reciban sus notificaciones sea "https://app.com/notificaciones.php" o "https://app.com/notificaciones/notificaciones.php" y si no hay algun bloqueo tipo de bloqueo, como con estas ips, podrian enviar informacion falsa, o hacer un ataque masivo de request hasta destrozar el servidor, algo asi por el estilo.
    Saludos!
     
    + + + + + + + + + + + ACTUALIZACION 
    Habia levantado un ticket de soporte, y me respondieron satisfactoriamente!
    ["{bloque : 209.225.49.0/24}", "{bloque : 216.33.197.0/24}", "{bloque : 216.33.196.0/24}", "{bloque: 63.128.82.0/24}", "{bloque : 63.128.83.0/24}", "{bloque : 63.128.94.0/24}"] 216.33.196.4 y 216.33.196.25 Al parecer son las mismas IPs, solo que en ML utilizan un rango mas bajo que en MP, esperemos que con esta informacion podamos proteger aun mas nuestras apps.
    Y ahora, como hacemos un filtro basico?
    $allowlist = array( '209.225.49', '216.33.197', '216.33.196', '63.128.82.', '63.128.83.', '63.128.94.' ); foreach ($allowlist as $key=>$ip){ if(strncmp($ip, $_SERVER['REMOTE_ADDR'], 10) === 0){ die('Ip out of range.'); } }; Simplemente ponemos los rangos de IP en un array, y hacemos un string comparison, si el que ejecuta el script no esta dentro de ese rango, adiosito.
    Saludos!
  25. Like
    Fernando Aguirre got a reaction from OscarRocha in Forma rápida de descargar TODOS los productos?   
    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.