Fernando Aguirre

Members
  • Content Count

    208
  • Joined

  • Last visited

  • Days Won

    25

Everything posted by Fernando Aguirre

  1. No, el token sera el mismo por 6 horas, mira has un print_r a la $_SESSION y ahi va a salirte el token. Ahora solo te vas a la documentacion de la API y lees un poco en el apartado de publicar un articulo. Saludos
  2. 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!
  3. Has intentado hacerlo directamente en Postman? O es mas, has la prueba insertando el token directamente, es decir, obten el token y lo pones directamente en el post. Si estas seguro que estas obteniendo el token?
  4. 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!
  5. 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
  6. Hola, es claro que el error habla por si solo, el access token es invalido, asegurate estarlo actualizando cada 5 horas. Saludos
  7. Hola, como comenta el compañero eso ya es problema local, osea tuyo, revisa tu codigo o publicalo aqui y te ayudamos, y osea, sin miedo no es co.o que vamos a robarte tu codigo. Saludos
  8. Que onda bato. Yo la forma que encontre para diferenciar las compras con el carrito fue la siguiente. Realmente o existe una referencia directa a que la compra fue echa con el carrito, por ejemplo un master id de orden. Lo unico que es igual es el shipment ID, por lo que ya guardas la info en tu DB y comparas los shipments id de cada orden para ver cuales son de carrito y cuales no. Es la unica manera/referencia que he encontrado. A y la otra era que en las ordenes normales la informacion del shipping se encuentra en la Api de orders, mientras que si es de carrito solo contiene el shipping id, entonces solo busca algo de la informacion del shipment en el api de orders y si no existe, es de carrito, por ejemplo el status, si existe el status es compra normal, si no existe es de carrito. Un dia lo analice y si me ha funcionado bastante tiempo. Ahora ya he aprendido mas despues de esa vez que te publique jajajaja. Saludos
  9. Hola. A mi me empezo a pasar, pero era problema del servidor donde tengo alojada mi app, de echo ellos mismos me avisaron que tenian problemas en su datacenter. Arreglaron el problema y adios a mi problema. Los servidores de ML los maneja Amazon. Saludos
  10. Hola. Tienes un VPS o estas trabajando en algun servidor shared? Te pregunto para ver si tienes acceso a los logs de error. No has intentado cambiar de servidor? A mi me paso algo igualito a lo tuyo, me llegaban las notificaciones y el mismo error de timeout y me di cuenta que era problema del servidor que se tardaba mucho en responder, y confirme mi teoria cuando la compania a la que le rento el vps anunciaron que tenian problemas en su datacenter, arreglaron el problema y el mio tambien. Ese error lo da porque no obtiene respuesta ML termina la conexion. Ve el log del php par ver que te indica, tambien verifica el access log para ver si tu servidor realmente esta recibiendo las notificaciones, prueba en otro servidor a ver que tal. Otra cosa, usas cloudfare para el DNS? O algun otro servicio similar? Como ML te bombardea con notificaciones, estos servicios bloquean las IP de ML porque lo catalogan como spam por hacer tantas llamadas a tu direccion web. Este puede ser otro problema. Te recomiendo que agregues al white list las IP de ML. Por ahi las postie en el foro de notificaciones. Generalmente el problema nunca va a ser parte de ML, si no de nuestro lado, ya tengo tiempo trabajando con la API y de eso me he dado cuenta. Saludos
  11. 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.
  12. Hola. Asi es, ese tipo de id es de un mensaje, no de una venta, ahorita yo recibo notificaciones ain problema alguno y todo correcto. Saludos
  13. Hola. Cuando se genera una venta ML te bombardea con notificaciones, esto es logico porque se sigue un proceso, y ese proceso puede suceder en el mismo instante, como por ejemplo, se crea la orden, se crea el pago, se acredita el pago, se acepta el pago, se acepta la orden, se crea el shipping, se crea la etiqueta del envio y asi. Entonces siempre vas a recibir de perdida unas 5 notificaciones en el mismo instante. Mercadolibre brinda la informacion, ya depende de nuestra experiencia y pensamoiento para utlizarla, y para procesarla tambien. Ya depende de nosotros aplicar filtros internos, funciones o lo qie sea para solo obtener lo que queremos. Tu problema ya es meramente de ti, lo que se debe de hacer para estos casos es lo siguiente: 1 - Recibe la notificacion 2 - Guarda la informacion basica en tu BD (payment_id, fecha y hora) 3 - En tu tabla donde guardes los datos pon un control interno, si vas a enviar mensajes por ejemplo pon una columna de control, por ejemplo, "sent" y pones de valor 1 o 0, donde el 1 significa que este ya fue enviado. 4 - Antes de enviar el mensaje cuando recibas una notificacion verifica si este ya fue enviado anteriormente, no se aqui depende de ti, crea una funcion que haga una llamada a tu BD donde verifiques que en ese payment id el mensaje tenga 1 o 0. 5 - Si la respuesta de tu funcion es 0, mandas el mensajes y si es 1, el mensaje ya fue enviado, entonces termi as el script. Esto es algo basico, porque tienes que implementar algo de seguridad como verificar si la IP desde donde recibes la motificacion es de mercadolibre, esto para que no te esten atacando y te creen informacion falsa. Como ves, todo depende de nosotros, somos developers y nuestra capacidad de resolver problemas debe de estar a la orden del dia. Saludos
  14. Hola. Como va a poder conectarse mercadolibre a tu computadora para poder enviarte las notificaciones? Si estas trabajando en localhost es imposible que ML te las envie. ML envia las notificaciones a urls que sean accesibles no a localhost, creo que no te habian respondido porque la respuesta era muy obvia. Por eso te daba el error de conection refused, porque intentaba enviarte notificaciones a ningun lado y como era localhost no aceptaba la conexion entrante. No tienes un log de errores para verificar si el error esta de tu lado y no de ml? No has realozado un POST manual desde Postman por ejemplo, con la estructura del json que envia ML? Primeramente has ese tipo de pruebas manuales amtes de decir que la API no esta funcionando. La API funciona bien, y generalmente los errores son por parte de nosotros. Tambien una manera facil de saber si las notificaciones te estan llegando y que hay error en tu script, es mediante el access log de apache o nginx, cual sea tu caso. Si nos mostraras algo de codigo ayudaria para poder brindarte mas ayuda. Saludos
  15. Para que quieres la autorizacion si ya tienes los tokens? Ya que tienes los tokens lo demas es hacer llamadas a la api con el token y listo no necesitas nada mas. Y estar actualizando el token, no te compliques mucho. Con esa informacion que tienes basta, ya no hay mas pasos para autentificarte, como es localhost solo tu puedes meterte a tu plataforma local, no tiene ni sentido que tengas una sesion en tu plataforma local. Veras intenta hacer llamadas a la api con el token, vas a empezar a obtener informacion. Saludos
  16. Esque no es tanto que exista interaccion del usuario, se supone que tienes que hacer la llamada a la api y que tu programa te imprima la respuesta. Supongo que hay algo en tu lenguaje de programacion como LoadUrl(https://api.mercadolibre.com/items/MLM3583839?access_token=jfjdjje34432344) Y que puedas imprimir la respuesta de alguna u otra manera, esa es la forma mas basica y sin mucho rollo, o que el json que te lanza, lo interprete correctamente, si tu lemguaje de programacion no permite hacer ese tipo de cosas, entonces ya sabemos que te esta limitando. O algo asi un getContents() getAlgoDeInternet() ya solo vas modificando la url de acuerdo a tus necesidades. Saludos!
  17. Y tal vez la duda queda en, y como cambio de pagina, tengo que hacerlo manual? Claro que no, se te dael numero de resultados, por lo que los divides entre 50 para obtener el numero de paginas. Ahora realizaras un for hasta que llegues al numero total de paginas y en cada iteracion llamaras a la api con el offset correspondiente, y ahora como se que offset le toca a cada iteracion? Facil, empiezas con $offset = 0 y al final de la iteracion le sumas 50, $offset += 50 y listo. offset = 0 for (x=1, x <= totalPaginas, x++){ llamada a ML para datos haces todo lo que necesites . . . offset += 50}
  18. Hola. Ahora si que te dire lo que siempre dicen los de ML, jajaja, "leete la documentacion" https://developers.mercadolibre.com/es_ar/api-docs-es/items-y-busquedas Saludos y espero puedas arrelgar tu reto!
  19. Hola, entonces obten el token y refresh con el node, y supongo que debe de existir una funcion en node para refrescar el token, la corres cada 5 horas y ya puedes hacer todo lo que quieras sin volver a pedirle a tu cliente su token. Saludos!
  20. Mira si tu herramienta es para un cliente en especifico y no para todo el publico, lo que tendras que hacer es obtener el token y refresh una primera vez, guardarlos en algun lado, un base de datos sqlite por ejemplo, y estar actualizando el token con el refresh token, ahi si por medio de un cronjob o algo por el estilo, de esta manera ya eliminas todo ese rollo de estar iniciando sesion y demas. Por ejemplo, en mi caso, tengo un cronjob que se ejecuta cada 5 horas y actualiza el token, lo guardo en mi base datos y ya si quiero hacer alguna consulta nomas lo jalo de ahi y listo. La verdad no se si exista un sdk para el lenguaje que utilizas. Y ya lo demas depende de la informacion que quieras obtener. Saludos!
  21. Hola, es correcto lo que dicen, tal vez no tienes que ser el master en programacion, pero si tienes que tener claro lo que estas haciendo. La verdad no te entiendo cuando dices la "api de windows" supongo que te refieres al SDK que esta en github para algun lenguaje de programacion, si es asi en ese mismo vienen ejemplos para principiantes, por lo que te recomiendo que les des una leida y ya cuando no tengas idea de lo que se encuentra en los ejemplos, ahora si acudes con nosotros y con gusto te ayudamos. Si posteas algo de codigo, lo que quieres hacer especificamente, ideas claras, el problema en especifico, es mas facil para nosotros poder ayudarte. Saludos!
  22. Hola. La verdad solo he usado el sdk de php, igual supongo que el camino es el mismo. Primeramente tienes que obtener el access token y el refresh token, con el ejemplo de example_login que viene en el sdk, en el de php viene. Ya que tengas esos tokens, los guardas en tu BD y cada 5 horas deberas de estarlos actualizando con un cronjob y guardar esa informacion siempre en tu base de datos. Ya lo demas depende de lo que ocupes, por ejemplo supongo que existe algun comando para hacer get a la api de ML con el sdk de node. Y como te digo, si nos contaras un poco que es lo que quieres lograr, digo ya se que listar los productos, pero de quien? los tuyos? los de tu cliente? todos los de mercadolibre? Saludos!
  23. Hola, asi es, ese numero de pedido es falso, en la API no aparece por ningun lado, estas son las formas en que diferencio una compra con carrito: - Mismo shipping_id - No existe mas informacion en el array de shipping mas que el id en el API de orders, por lo que si simplemente buscan el status por ejemplo, y no lo contiene, es que es de carrito esa compra. Ya con estos datos puedo marcar esa orden como parte del carrito, ya lo demas es destreza del developer, por ejemplo ya agrupas las ordenes con el mismo shipping_id y asi puedes obtener la compra con el carrito, o muchas otras alternativas. No es por mala onda pero esta informacion se encuentra en la documentacion: https://developers.mercadolibre.com/es/autenticacion-y-autorizacion/manejo-de-ordenes https://developers.mercadolibre.com/es/autenticacion-y-autorizacion/manejo-de-ordenes Saludos!
  24. Algo anda mal, eso no deberia de funcionar, para empezar no te permite poner http en el redirect uri. Lo que puedes hacer es obtener por primera vez el token y refresh y ya con un cronjob nomas le estas haciendo refresh, sin la necesidad de estarte haciendo login, eso es lo que se supone que se debe de realizar, asi cada 5 horas corres el cron y se actualiza el token, y asi ya podrias trabajar en localhost, pero claro, no te llegarian notificaciones de nada porque ML no sabria a donde mandarlas. Depenede mucho de lo que estes haciendo, si vas a llevar un tracking de ventas y asi donde necesitas saber que ventas has realizado al momento, sin la ayuda de las notificaciones se pone mas complicado porque tendrias que hacer un cron para estar checando ventas nuevas. Si lo unico que quieres es jalar datos de la API y no te imporan las notificaciones, entonces sigue tu camino y ya jajaja