Fernando Aguirre

Members
  • Content count

    4
  • Joined

  • Last visited

  1. Autenticar de forma automatica

    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
  2. Falta el shipping cost en el pago

    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!
  3. Visitas Totales de un Item

    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!
  4. Visitas Totales de un Item

    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!