Fernando Aguirre

Members
  • Content Count

    186
  • Joined

  • Last visited

  • Days Won

    21

Everything posted by Fernando Aguirre

  1. Hola, me da gusto que se haya resuelto tu duda, a veces la API de ML como que no funciona a la perfeccion. Ten un excelente dia!
  2. Hola. Es correcto, simplemente lo mandas como plain text y automaticamente el sistema de mensajes lo convierte a un link. Como lo se? yo lo hago asi y funciona como te explico. Ten un excelente dia!
  3. Hola. Utiliza las notificaciones, cada vez que te realizan una compra, ML te envia una notificacion con la informacion de la orden, ya lo demas es solo extraer los datos necesarios para enviar un mensaje al cliente de esa orden. Y si es cierto, todo esta en la documentacion, especificamente en notificaciones y mensajes post-venta. Ten un excelente dia!
  4. 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!
  5. Hola. Te recomiendo que utilices postman para probar las notificaciones. Puedes enviar algo asi para hacer pruebas. { "resource": "/orders/1654468543", "user_id": 2099754556, "topic": "orders_v2", "application_id": 206546456546546, "attempts": 1, "sent": "2017-10-09T13:58:23.347Z", "received": "2017-10-09T13:58:23.329Z" } Revisa tu codigo, estas seguro que funciona a la perfeccion? o tienes algunas dudas? si tienes dudas con el codigo postea aqui lo que tengas y te ayudamos a resolverlo, como comentas que se queda cargando por tiempo ilimitado, parace que es algo de tu script, y no de MercadoLibre, te lo digo porque yo tambien estaba probando un script con las notificaciones y si las he recibido sin ningun problema. Y algo muy importante, estas considerando el token? para obtener informacion privada, tienes que usar los tokens. Ten un excelente dia! Aqui te podemos ayudar entre todos, si es posible postea tu codigo.
  6. Hola, yo soy Ingeniero Civil y vendo por mercadolibre, solo que la programacion se me facilita y la verdad con toda la informacion que te da la api puedes hacer maravillas, como segmentar toda tu publicidad hacia una ciudad en especifico o una colonia, si se da el caso. Ahorita estoy haciendo mi plataforma de estadistica, guardo toda la informacion que me sirve de las ordenes, envio un mensaje automatico de agradecimiento y con instrucciones en cada nueva compra, guardo las visitas diarias de cada publicacion (esto me ayuda mucho en saber si aumento o disminuyo mi publico, y cuantas ventas por vistas tengo al dia, ademas que dias activar la publicidad de ml) , cuando la orden ha sido entregada envio un mensaje de agradecimiento por la confianza y los invito a hacerme un review en mi pagina de facebook, y ahorita ando trabajando en un bot que responda el 95% de las preguntas que me hacen, "aun tienes en existencia" jajajaja. Uso cronjobs en mi propio VPS para actualizar el token (con este batalle, luego se me ilumino la mente y fue muy facil hacerlo jajajaja) , guardar las visitas acumuladas, y calcular las visitas diarias en base a las acumuladas. Y todo lo anterior es solo el server side, nomas termino de afinar todo y empezare con el front end. Para esto tengo pensado un panel de control basico, algun template de bootstrap, y ponerle barritas y graficas, y lo que mas quiero es poner un mapa de google maps y que me ponga puntos en las ciudades donde mas me compran, hacer como un tipo de mapa de densidad, y de esta manera darme una idea general de hacia donde segmentar la publicidad que tengo en mi pagina de facebook. Cuando termine la plataformita personal, me va ayudar bastante, y vaya, lo divertido es aprender buscandole por todos lados. Si te preguntas de donde se me ocurrio todo eso, todo ha sido en base a mis necesidades y se me van viniendo ideas a la mente, espero algun dia optimizarla muy bien y poder ofrecer el servicio de estadistica. Y si, la documentacion de la API esta muy basica y le falta actualizarse, pero prefiero eso a nada jajaja. Te deseo un excelente dia! saludos desde mexico
  7. Concuerdo contigo, aunque depende de la situacion, hay cosas muy basicas que preguntan las personas y si se amerita que la envien a la documentacion, por ejemplo como obtener un token de autentificacion. Pero si hay cosas mas avanzadas, como estar actualizando el token automaticamente, por ejemplo, esa informacion no esta por ningun lado, entonces ahi si vendria bien una guia para saber si estamos tomando bien el camino. De igual modo, supongo que los mods hacen este trabajo por gusto, y no les pagan por cada pregunta que resuelven. Yo participo aqui por gusto, y cuando aprendo algo nuevo lo trato de poner aqui, el ejemplo que te puse arriba me sucedio y logre resolverlo solo, y por ahi lo postie para que no le pasara a alguien mas. En fin, somos una comunidad y entre todos debemos de ayudarnos.
  8. Hola creo que existe una forma. Crea un acces token y un refresh token por primera vez manualmente y guardalos en tu base de datos. Crea un cronjob en tu servidor personal que ejecute un script que: 1 - Jala de tu base de datos el refresh token 2 - Haz refresh el acces token con el SDK de mercadolibre de tu prefrencia para server side (yo use php) 3 - El SDK te va a devolver una respuesta donde en el body se encuentran tu nuevo acces token y refresh token 4 - Actualiza en tu base de datos el nuevo refresh token y el nuevo acces token, y elimina los viejos. Mas o menos asi deberia de estar tu base de datos Datos del inicio ---------------------------------------- id_usuario | token | refresh_token ---------------------------------------- 123456789 | xxxxxxx1 | yyyyyyy1 Datos ya actualizados al ejecutar el script ---------------------------------------- id_usuario | token | refresh_token ---------------------------------------- 123456789 | xxxxxxx2 | yyyyyyy2 Ya que lo hayas probado creas un cronjob en tu servidor, por ejemplo yo lo ejecuto cada 5 horas 0 */5 * * * php -q /var/www/html/actualizar.php Ahora en tus scripts en lugar de hacer todo el show de login o hacerle refresh al token, solo jalas de tu base de datos el acces token y llamas al SDK de meli con tu token que tienes guardada. Este es un ejemplo con el que probe todo lo anterior, usando PHP y PostGreSQL: config.php // Basic data from de app $appId = 'tuID'; $secretKey = 'tuSECRET'; $redirectURI = 'tuRedirect'; $siteId = 'MLX'; //DB Connection $db_handle = pg_connect('host=XXX' 'port=YYYYY' 'dbname=RRRRR' 'user=MMMMMM' 'password=BBBBBB'); $db_query = "SELECT token, refresh_token FROM tutabla WHERE id_usuario = '123456789'"; $db_result = pg_query($db_query); $db_myrow = pg_fetch_assoc($db_result); //Get tokens $token = $db_myrow[token]; $refresh_token = $db_myrow[refresh_token]; update.php //Call the SKD and the config file require 'ml.php'; require 'config.php'; $meli = new Meli($appId, $secretKey, $token, $refresh_token); $refresh = $meli->refreshAccessToken(); $new_token = $refresh['body']->access_token; $new_refresh_token = $refresh['body']->refresh_token; $refresh_query = pg_query("UPDATE tutabla SET refresh_token ='".$new_refresh_token."',token ='".$new_token."' WHERE id_usuario = '123456789'"); prueba_facil.php Mira que facil queda un script cuando guardas los tokens en tu base de datos, es un ejemplo super basico ya tu puedes agregarle mil cosas de seguridad extra. //Script para obtener datos de mis clientes //Call the SKD and the config file require 'ml.php'; require 'config.php'; $meli = new Meli($appId, $secretKey, $token, $refresh_token); $params = array(); $result = $ml_session->get('orders/search/recent?seller=123456789&access_token='.$token, $params); foreach($result['body']->results as $mydata) { echo $mydata->buyer->id .",". $mydata->buyer->phone->number .",". $mydata->buyer->email .",". $mydata->buyer->nickname .",". $mydata->buyer->first_name ." ". $mydata->buyer->last_name ."<br>"; } De esta manera ya puedo crear una app que al momento en que me llegue una notificacion, con los datos de la notificacion automaticamente obtener los datos de un pago y guardarlos en mi base de datos, o los datos de una orden, o muchas cosas automatizadas puedes lograr, por ejemplo sincronizar el stock de tu tienda en woocommerce con el de mercadolibre o visceversa, tambien puedes hacer que al momento de realizar una compra en mercadolibre, quitar stock en tu woocommerce. Y con este metodo siempre tendras un acces token activo para ti o tu cliente, que podra estar actualizando cosas automaticamente. La verdad a mi no me "caia el 20" y hasta que por fin se me ilumino la mente, lo probe, y funciono y ahora se me abrio aun mas la mente con todo lo que puedo lograr de ahora en adelante. Espero te haya ayudado, para que no veas que todos te vamos a responder que leas la documentacion de la api o simplemente un "no" jajajaja
  9. Hola buen dia. Estoy creando algo basico para guardar la cantidad de dinero REAL (menos comision y envio) que recibo por cada pago que me hace un cliente, solo que al usar la api con el siguiente link: https://api.mercadolibre.com/collections/{id}?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxx Me devuelve esta informacion: "transaction_amount": 549, "mercadopago_fee": 0, "net_received_amount": 477.63, "total_paid_amount": 549, "shipping_cost": 0, "coupon_amount": 0, "coupon_fee": 0, "finance_fee": 0, "discount_fee": 0, "marketplace_fee": 71.37, Y por ningun lado aparece el monto que realmente recibi, porque a mi no me depositaron en mi cuenta $477.63 si no que me depositaron por esa venta $434.43 por que me descontaron el envio. Entonces hay una inconsistencia y no puedo guardar los datos correctos porque si cambia automaticamente el costo del envio, lo tendre que poner manualmente, y de eso no se trata. Espero me puedan ayudar, gracias!
  10. Hola buen dia. Como te comente, guardo los acumulados en mi base de datos personal, y asi obtengo un control real de cuantas visitas tengo diarias, me falta hacer esa parte, pero con una simple consulta SQL se puede obtener. Uso PostgreSQL Y este es el cronjob que ejecuto todos los dias a las 11:50 pm (23:50 hrs) para guardar los datos en la base de datos. Espero te sirva la actualizacion, ten un excelente dia! +++++++++++ACTUALIZACION ENERO 2018++++++++++++++++++ Hola, ya implemente lo de obtener las visitas diarias de mis productos en venta. De igual manera me cambie a usar MySql (pero esto no importa ni hace diferencia) Aqui estan mis acumulados Y esta es la otra tabla donde guardo las visitas diarias (que es la resta entre acumulados) Aun ando en el Backend, todavia me falta hacer algo bonito para ver los datos.
  11. Hola. Tal vez lo que quieres es ver lo siguiente: 27 Enero: 15 visitas 28 Enero: 20 visitas 29 Enero: 10 visitas Y crear una estadistica (con graficas y todo lo demas) para por ejemplo ver que dias te conviene pagar por publicidad extra y que dias no. Y todo esto basado en las visitas que muestra mercadolibre en tu resumen de publicaciones y no con los datos que te da la API siguiente donde utilizas el rango de fechas (porque esta no esta en tiempo real.): /items/MLAXXXXXXXX/visits/?date_from=2015-04-01&date_to=2016-03-22, Lo que se me ocurre es utilizar la siguiente API como comentaron anteriormente: https://api.mercadolibre.com/visits/items?ids=MLAXXXXXXXX y en una base de datos propia en tu servidor (MySQL, PostgreSQL... la que gustes) guardes cada final del dia las visitas que obtuviste, entonces en tu base de datos siempre tendras el acumulado a ese dia, para saber el numero de visitas de cada dia, solo haces una consulta a tu BD donde reste el dato actual - dato anterior y asi obtendras las visitas de cada dia. --------------------------------------------- Tabla de visitas acumuladas --------------------------------------------- ID | dia |visitas_acumuladas 01 | 26/01/2017 |10 02 | 27/01/2017 |25 03 | 28/01/2017 |45 04 | 29/01/2017 |55 --------------------------------------------- Resultados de consulta dia | Visitas totales 27/01/2017 | 25-10 = 15 28/01/2017 | 45-25 = 20 29/01/2017 | 55-45 = 10 *Nota: El acumulado debes de guardarlo a lo que tu consideres final del dia, por ejemplo puedes hacer "corte" todos los dias a las 22:00 hrs *Nota: Para hacer esto, debes de tener un servidor en el cual puedas crear Cronjobs para que cada dia ejecute el script server-side *Nota: Si no tienes acceso total al servidor (No es un VPS, si no un shared Hosting) puedes crear el script y manualmente todos los dias lo ejecutas *Es importante que agregues un id unico a cada fila para que cuando realices el calculo, sea mas facil realizarlo para el motor de tu BD, entonces ya seria algo mas facil como ID actual - Id anterior *Tambien podrias tener otra tabla en tu base de datos donde guardes los resultados de las visitas por dia, asi ya no saturas a tu BD cada vez que quieras saber esta informacion, y claro, utilizando los datos de tu "Tabla de visitas acumuladas" por ejemplo: --------------------------------------------- Tabla de visitas diarias --------------------------------------------- ID | dia |visitas_acumuladas 01 | 27/01/2017 |15 02 | 28/01/2017 |20 03 | 29/01/2017 |10 --------------------------------------------- Para esto, creas otro script que haga el calculo del ultimo dato - dato anterior, pero solo lo hara con los dos ultimos datos que se insertaron a tu BD, de esta manera ahorras recursos y va a ser mas eficaz tu proceso al tener separado todo, y asi ya no tendras que guardar todos las visitas acumuladas, puedes estar borrando las visitas acumuladas cada mes o semana. En este caso puedes obtener como resultado que los dias Sabados (El 28 de enero de 2017 fue sabado) te conviene pagar por publicidad extra, porque es cuando obtuviste mayor trafico. Si quieres irte mas detallado, puedes guardar en tu BD el numero de visitas cada hora, cada minuto, lo que quieras, pero ya lo veo como un gasto innecesario porque llegaras mas rapido a los limites que nos pone ML en el numero de consultas diarias. Esto es en lo que te puedo ayudar amigo, como vez, tenemos que poner de nuestra parte para guardar los datos en nuestra propia BD, de igual manera asi no saturamos los servers de ML, la ventaja es que tendras mas velocidad, y que podras tener un historial ilimitado de datos. Esto ha sido algo que se me ocurrio ahorita, lo pondre en practica y te comentare mis resultados, y pondre imagenes y demas. Ten un excelente dia!