Leaderboard


Popular Content

Showing content with the highest reputation since 06/02/2014 in Posts

  1. 3 points
    Divulgação do meu canal do youtube, onde mostro na prática a utilização da maravilhosa API do Mercado Livre. Acessem https://www.youtube.com/channel/UCfkk9UGL2DLtdunYuQiK4TQ
  2. 3 points
    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!
  3. 3 points
    Rodrigo

    Atributos de anúncios

    Existem atributos fixos e atributos que realmente não são exibidos. Acredito que isso ajude o Mercado Livre a criar filtros e categorizar melhor as coisas. Mas antes não aparecia nenhum atributo nos anúncios e agora já aparecem alguns na página do anúncio. Recomendo adicionar todos que for possível. No futuro isso pode começar a aparecer. [ ]'s
  4. 3 points
    Olá, basta passar o status como filtro com o valor UNANSWERED Segue um exemplo: https://api.mercadolibre.com/questions/search?seller_id={seller_id}&status=UNANSWERED&access_token= [ ]'s
  5. 2 points
    DIEGO_V_G_SILVA

    Processamento de fotos

    Boa tarde. Desde semana passada está ocorrendo uma instabilidade na publicação das fotos dos anúncios. Para contextualizar: quando um anúncio (item) é publicado via API, em uma de suas propriedades (pictures) é passado o endereço (URL) das fotos. A API do Mercado Livre fica responsável por acessá-las, baixá-las, processá-las e disponibilizá-las no anúncio em questão. Todas essas etapas geralmente demoram poucos minutos, no máximo. Porém, desde semana passada, todas as publicações feitas pelos nossos clientes estão pendentes de foto, isto é, aparecem como "Processando imagem", tanto na edição quanto no anúncio per se. Tentamos alterar a publicação para que publicasse as fotos via outros domínios (URL) mas o problema persiste, independentemente de domínio. Ficamos no aguardo de uma resposta.
  6. 2 points
  7. 2 points
    Buen dia amigos. Esta no es una duda, es una aportacion debido a los problemas que me tope (anoche) en la implementacion del API, apenas tengo 1 (uno) dia haciendo la implementacion y mi primer detalle fue "capturar" la access_token debido a que mercadolibre retorna la token anteponiendo un # (hashtag) por lo cual, el PHP directo es imposible obtener dicho valor por el flujo $_GET, $_POST o $_SERVER. Tuve que detenerme en estudiar el problema como por 4 horas para finalmente encontrar una manera, a final de cuenta funciono pero me gustaria compartirles mi solucion ya que no uso el SDK Meli ya que mi codigo es mas simplificado e intuitivo (para mi plataforma). ## Generando URL de autentificacion <?php $loginurl= 'https://auth.mercadolibre.com.mx/authorization?response_type=token&client_id=ID_DE_MI_APP'; # yo creo una sesion general para validar si ya fue sincronizada la pp if( !$_SESSION["mercadolibre_token"] ) echo '[<a href="'. $loginurl. '">Conectar</a>]'; else echo 'Ya estas conectado :D'; ?> En mi APP (en la plaatforma mercadolibre) configure que el "callback" sea la URL directa "www.miempresa.com" y yo me encargare de disernir entre una sincronizacion de mercado, twitter y facebook... Para esto usare dos partes, el callback que recibe y el callback que procesa. CALL BACK QUE RECIBE, este practicamente recibe la respuesta de mercadolibre, que en lo personal es irrecomendable ya que metes en lios a los desarrolladores: http://www.miempresa.com/#access_token=la_token&expires_in=_segundos_&user_id=_id_usuario_&domains=_dominio_ Practicamente por javascript capturamos el elemento "hashtag" y lo transformamos a como PHP lo puede leer (http://www.miempresa.com/?var=data&var=data) <?php # callback que recibe define( HTTP_SERVER, "http://www.miempresa.com" ); echo '<script type="text/javascript"> var a= window.location.hash; if( a!==\'\' ) { var url= \''. HTTP_SERVER. '/?\'+a.substr(1); window.location = url; } </script>'; ?> CALL BACK QUE PROCESA, este ya es el que recibe por flujo $_GET la info para procesarla <?php # callback que procesa if( $_GET["access_token"] && $_GET["expires_in"] && $_GET["user_id"] && $_GET["domains"] ) { $_SESSION["mercadolibre_token"]= $_GET["access_token"]; # genero el access_token para uso en toda la plataforma # actualizacion en BDD para guardar los datos de mercado $trama= array( "id"=>"'". proteger_cadena($_SESSION["SUPERID"]). "'", # id del USUARIO en mi BDD "mercadolibre_id"=>"'". proteger_cadena($_GET["user_id"]). "'", "mercadolibre_token"=>"'". proteger_cadena($_GET["access_token"]). "'", "mercadolibre_expire"=>"'". proteger_cadena(($_GET["expires_in"]+time())). "'" ); if( !actualizar_bdd( "USUARIOS", $trama ) ) # mi funcion de guardar echo '<div class="msg_error">Problemas para actualizar datos.</div>'; else echo '<div class="msg_exito">Cuenta de mercadolibre asociada con exito.</div>'; } ?> Al final tendremos guardada la token para uso posterior, y como es costumbre mia, tendre una variable de sesion especifica para usarla en la plataforma: $_SESSION["mercadolibre_token"] Espero les haya ayudado Saludos !
  8. 2 points
    Eu resolvi este erro adicionando o seguinte parâmetro no request : &caller.id=<codigo_usuario>. Sendo que o codigo do usuário é o mesmo que eu uso como "seller" nos endpoints de consulta de pedidos. Ex: https://api.mercadolibre.com/shipment_labels?shipment_ids=9999999&access_token=APP_USR-XXXXXXXXXXXXX&response_type=zpl2&caller.id=999999999 Acabou funcionando por tentativa e erro. Mas deveriam ter notificado a alteração e atualizado a documentação.
  9. 2 points
    Tem que tratar todas. Quando tiver alteração em SHIPMENTS, não necessariamente terá em ORDERS_V2. Este seria o funcionamento correto, porém as notificações falham muito e é bom ter processos redundantes para verificar os dados. Isso já foi comentado várias vezes aqui no forum. Com relação à tratar as duplicidades, não precisa. Se você recebe 2 notificações do mesmo resource e ainda não foi buscar os dados relacionados, quando for buscar, já estarão com os últimos dados, então pode tratar somente uma vez.
  10. 2 points
    Alguém conseguiu fazer o upload de anexo na API de mensagens em Java? Na documentação somente mostra como faz usando 'curl' não consigo subir via API Rest. Sempre recebo a mensagem: {"message":"File attachment must not be empty","error":"bad_request","status":400,"cause":[]} Usando o Postman consegui tranquilamente conforme a imagem.
  11. 2 points
    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!
  12. 2 points
    gbandoni

    Produto não é publicado no ML

    Vou te dar uma dica que eu considero valiosa Usa e abusa do Postman . Se tu conseguir fazer no postman ( e 99% delas tu vai conseguir) você pode usar o gerador de código para gerar o básico vou ter dar um exemplo Tu quer subir imagem via disco local e na documentação ele lista o comando como curl -F file=@/home/user/picture.jpg https://api.mercadolibre.com/pictures?access_token=$ACCESS_TOKEN Se tu for em File\Import tu cola o comando Tu vai ver que ele cria uma entrada com base na sintaxe Em body tu vai precisar mudar o tipo de parametro de text para file. Ai em File tu pode selecionar um arquivo local em disco Tudo configurado ? Teste e veja o resultado , se funcionou ótimo , se não verifique os erros e teste até conseguir. Funcionou ? Clica no botão Code Ele gera um código super básico, mas serve de ponto de partida Eu não acho esse código a melhor solução (isso deve dar dor de cabeça em manutenções futuras) HttpResponse<String> response = Unirest.post("https://api.mercadolibre.com/pictures?access_token=XXXXX") .header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW") .header("Content-Type", "application/x-www-form-urlencoded") .header("cache-control", "no-cache") .header("Postman-Token", "108d9878-863b-410c-92cc-3cd902f42f43") .body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--") .asString(); Uma pequena alteração ja melhora a funcionalidade dele HttpResponse<String> response = Unirest.post("https://api.mercadolibre.com/pictures?access_token=XXXXX") .header("Content-Type", "application/x-www-form-urlencoded") .header("cache-control", "no-cache") .field("file", new File("C:\temp\imagem.jpg")) .asString(); Espero que tenha ficado mais facil de entender
  13. 2 points
    Todos los usuarios que se adhirieron a la aplicacion tubieron que desligar para luego volverse a adherir nuevamente ya que cuando se adhirieron no estaban los scopes habilitados, no imorta si te vuelven a dar permiso para que uses la app, tienen que eliminarla y tenes que tener los scopes habilitados Espero que te sirva, suéter.
  14. 2 points
    Só um desabafo, mas esse mercado livre só está nos fud***do.. Agora os bonitões inventaram nova autenticação de contas com nossos sistemas toda vez que a senha do usuário for mudada. A pergunta é PRA QUE ESSA PORCARIA?? Tenho clientes com várias contas e só vamos perceber depois que começar a não baixar os pedidos. Vai virar uma zona isso!!!
  15. 2 points
    kaduBass

    URL NOTIFICACAO NAO RECEBE

    Questao resolvida : solucao Ao cadastrar a url eu tinha colocado HTTP , porem meu sistema esta redirecionando para HTTPS . Dando erro 301 . Entao tive que mudar para HTTPS no painel . Eu verifiquei o erro pelo : https://api.mercadolibre.com/myfeeds?app_id=appid&acess_token=token Lembrando quem for mudar pelo painel do gerenciamento de app eu verifiquei que o MERCADO LIVRE demora um tempo pra atualizar a URL , entao fiquem ligados nao e algo automatico a atualizacao .
  16. 2 points
    Eu entendi mais que apenas revalidar o token. Quem que reautorizar as aplicações. Acho que me empolguei. Mas tem sentido, se por algum acaso o cara trocou a senha é porque entende que sua conta está insegura. Claro que o usuário pode ter esquecido a senha, eu faço isso direto! Se for só refazer o token é moleza, você nem vai perceber se fez o seu script de renovação bonitinho ? Agora se tiver que reautorizar... vai aparecer janelinha para ele tantas vezes que ele vai pensar que há algum tipo de invasão acontecendo
  17. 2 points
    Thomas

    Delphi 7 - Token Autenticação

    Não é uma pergunta, mas compartilhando como conseguir token de autorização com delphi 7 e indy. // Retorna Token de Acesso de Mercado Livre function RetornaTokenAcessoMeLi : String; var Resposta : String; Params : TStringList; // Retorna Token de Acesso de Mercado Livre, de JSON de resposta de requisição function RetornaToken(JSON : String) : String; var js : TlkJSONobject; Token : string; begin try js := TlkJSON.ParseText(JSON) as TlkJSONobject; Result := js.getString('access_token'); except Result := ''; end; end; begin Params := TStringList.create; Params.add('client_id=' + IDAplicacaoMeLi); Params.add('client_secret=' + SecretKeyMeli); Params.add('grant_type=client_credentials'); IdHTTPMercadoLivre.Request.ContentType := 'application/x-www-form-urlencoded'; try Resposta := IdHTTPMercadoLivre.Post('https://api.mercadolibre.com/oauth/token', Params); Result := RetornaToken(Resposta); finally Params.Free; end; end; Crédito da página como consegui elaborar o código: https://stackoverflow.com/questions/38833651/using-indy-to-retrieve-revcontent-oauth-token Tem que ter os componentes TidHTTP e TIdSSLIOHandlerSocketOpenSSL declarados na função ou então arrastados os componentes no formulário.
  18. 2 points
    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!
  19. 2 points
    Woomelly

    Limite de requisições por hora

    This always appears to me: Max. Requests by Hours: 18000 I have not paid attention to him at the moment. Maybe it will help you. ---------- Isso sempre me parece: Max. Solicitações de horas: 18000 Eu não prestei atenção a ele no momento. Talvez isso te ajude.
  20. 2 points
    Hola! Hazlo asi... https://api.mercadolibre.com/sites/MLA/search?category=374976&state=TUxBUENBUGw3M2E1 EN DONDE state debe tener uno de los valores que esta URL inicial https://api.mercadolibre.com/sites/MLA/search?category=374976 en la parte "available_filters": Te da una lista de estados, usa los IDs de los estados CONCATENADO PREVIAMENTE por state=xxxx lo que sea https://api.mercadolibre.com/sites/MLA/search?category=374976&state=TUxBUENBUGw3M2E1 "id": "state", "name": "Location", "type": "text", "values": [ { { "id": "TUxBUENBUGw3M2E1", "name": "Capital Federal", "results": 9902 }, { "id": "TUxBUEdSQWVmNTVm", "name": "Bs.As. G.B.A. Oeste", "results": 6707 Saludos! Ani
  21. 2 points
    Padrão ML de Qualidade! ?
  22. 2 points
    xsbr

    custo fixo + comissão (02/07/2018)

    Fórmula - Valor Acrescentar = R$ 5,00 / (1 - %Comissão ML - %Imposto) Ex1: Premium com Imposto a 10% VA = 5,00 / (1 - 0,16 - 0,10) = 6,75 Ex2: Clássico com Imposto a 12% VA = 5,00 / (1 - 0,11 - 0,12) = 6,49 @rodrigojob esses R$ 5,00 podemos chamar como taxa do "Fundo de Pobreza do MercadoLivre"
  23. 2 points
    cara, por favor coloca o codigo que sim funciona. acho que issa categoria nao aceita os attributes que voce esta usando
  24. 2 points
    Retire o sale_terms. Isso ainda não está liberado para inclusão ou atualização pela API. Aproveitando, @Wesley Nascimento quando as atualizações de sale_terms estarão disponíveis para inclusão ou alteração via API? Tenho vários clientes que não conseguem alterar os dados de sale_terms (prazo de produção) e precisam usar o front do ML. Tem também a parte de marcar que o pedido está pronto para geração de etiqueta quando o produto tem prazo de produção e isso também não foi liberado ainda via API.
  25. 2 points
    Sería muito bom sé os programadores da API tambem leieram a documentacao. É que é comum que os desenvolvedores da API não lêem decentemente a documentação e não procuram as perguntas anteriores no fórum. Eu luto muito com os conceitos da API, assim precisamos compreender tudo tempo de novo por completo a forma de uso. Brincadeiras e nem tanto. :p
  26. 2 points
    Creemoslo! Montos minimos donde mercadolibre te obliga a ofrecer envio gratis Argentina: 1400 Pesos argentinos (https://www.mercadolibre.com.ar/mercadopuntos/enviogratis) Brasil: 120 Reales (https://www.mercadolivre.com.br/mercadopontos/fretegratis) Colombia: 70.000 (https://www.mercadolibre.com.co/mercadopuntos/enviogratis) Mexico: 549 (https://www.mercadolibre.com.mx/mercadopuntos/enviogratis) Chile: 15.000 Pesos chileno (https://www.mercadolibre.cl/mercadopuntos/enviogratis)
  27. 2 points
    Uma empresa desse tamanho com uma API porca dessas, eu descobri que a requisição não é GET e sim POST, o engraçado é que no exemplo eles dão uma URL com query string, ai dá a entender que você envia por GET, consegui usando o SDK mesmo, mas obrigado
  28. 2 points
    xsbr

    Obter número da nota fiscal do pedido

    @mldev era mais fácil ele explicar que ele queria "refazer" as etiquetas dos Correios, não é? @Schervinski tente baixar a etiqueta em formato ZPL que virá em texto plano, talvez você tenha mais sorte desta forma
  29. 2 points
    Hola Ricardo. Te voy a guiar porque yo tambien batalle. Primeramente, antes que nada tienes que guardar el access token y refresh token en tu base de datos, para que? para que no tengas que estar actualizando el token y seguirle dando vida manualmente. Primeros pasos 1 - Adquiere el token y refresh token por primera vez y los guardas en tu bd manualmente. Si ya entiendes lo de la autorizacion, con un echo en php obtienes estos dos datos. 2 - Ya que tienes estos datos, crea un daemon en tu servidor para que le haga refresh al token cada 5 horas 3 - Para crear el daemon, crea un archivo en php y "jala" tu token y refresh token, haces el llamado del SDK de ML, y ejecutas: require 'basics/meli.php';//El archivo del SDK de ML en php $ml_session = new Meli($appId, $secretKey, $token, $r_token);// Jala todos estas variables de tu BD $refresh_tokn = $ml_session->refreshAccessToken();//Ejecutalo para obtener un nuevo token $new_token = $refresh_tokn['body']->access_token; //este es el nuevo token $new_refresh_token = $refresh_tokn['body']->refresh_token; // este es el nuevo refresh token Ya solo queda hacerle un UPDATE a tu bd donde guardas los tokens, esto es facil, de esta manera ya automatizas el refresh de los tokens. 4 - Crea un cronjob que ejecute el script en php cada 5 horas, como tengo un vps con linux, quedaria algo asi: 0 */5 * * * php -q /root/archivo.php 5 - Ahora en cada script para tu APP que requieras los tokens, solo haces el llamado a tu BD y jalas esos datos. Ya terminamos la parte para automatizar el refresh de los tokens Atrapa las notificaciones 1 - En la documentacion dice que en tu APP pongas la url donde seran dirigidas las notificaciones, entonces ya teniendo esto en cuenta, crea un script para "atraparlas" por ejemplo, cuando te compren algo, te va a llegar una notificacion como esta: { "resource": "/orders/1499111111", "user_id": 123456789, "topic": "orders_v2", "application_id": 2069392825111111, "attempts": 1, "sent": "2017-10-09T13:58:23.347Z", "received": "2017-10-09T13:58:23.329Z" } 2 - Lo que ocupas de esa informacion es el "resource", haces un llamado al API de ML con el resource: $data = json_decode(file_get_contents('php://input'), true);//Con esto atrapas la informacion que te envia ML $resource = $data['resource']; //Aqui creas tu variable que contiene el resource $ml_session = new Meli($appId, $secretKey, $token); //Crea la sesion de ML $params = array('access_token' => $token); $order_data = $ml_session->get($resource, $params);//Haces un GET a la API para obtener los datos de la orden 3 - Tu $order_data ahora tendra como datos el array de toda tu orden, en este array lo que nos importa es: $order_data_buyerid = $order_data['body']->buyer->id; $order_data_id = $order_data['body']->id; 4 - Ya que tenemos los datos basicos, ahora creamos el mensaje: $message_body = array('from' => array('user_id' => xxxxxxxxxxx),//Aqui va tu user ID, el de tu cuenta. 'to' => [array('user_id' => $order_data_buyerid ,// A quien le enviamos el mensaje 'resource'=> 'orders', 'resource_id'=> $order_data_id,//El id de la orden 'site_id' => "MLM")],//Que ML usamos, en mi caso es Mexico, por eso la M 'text' => array('plain' => 'Hola muchas gracias por tu compra, Ten un excelente dia'), );// Todo esto es el mensaje 5 - Ya quedo listo todo lo complicado, ahora solo queda enviar el mensaje. Te aclaro que puedes enviar mensajes en formato HTML, solo cambia en el array de 'text' el 'plain' por 'html' e insertas el codigo HTML como string y listo. 6 - Ahora solo queda realizar un post al API de messages, donde enviaras todo el cuerpo del mensaje que creamos anteriormente: $message_send = $ml_session->post('/messages',$message_body, $params);//Ejecuta el envio del mensaje Es realmente facil, solo que la documentacion no es tan extensa y no te explica todo esto, lo entiendo, porque la documentacion solo es una guia, ya lo que queramos hacer depende de nosotros. Yo lo hago asi y cada vez que recibo una orden nueva, ejecuto todo lo anterior y se envia el mensaje automaticamente, y claro tambien guardo toda la informacion de la orden nueva en mi base de datos, bueno no toda la informacion, solo la que me sirve para crear mi estadistica personal. Tambien, por ejemplo, yo entrego la paqueteria a la 1 pm, entonces si me compran algo despues de esa hora, envio un mensaje diferente, donde les digo que el paquete sera enviado al dia siguiente, o si me compran en sabado o domingo, les envio un mensaje donde les indico que el paquete sera enviado hasta el dia lunes, vaya, aqui ya depende de la imaginacion de cada quien. La verdad yo he comprado cosas en ML y nadie te manda un mensaje de agradecimiento, ni manual ni automatico, entonces tenemos que hacer la diferencia para que los clientes se sientan seguros, confiados y satisfechos. Basicamente esos son los pasos a seguir, yo batalle bastante para llegar a esto, y la verdad no quiero que los demas batallen tanto como yo lo hice. Espero te haya ayudado, si quieres puedes invitarme un cafe por paypal jajajaja. Te deseo un excelente dia y aqui estamos para ayudar en lo que sea, ademas para darle vida a este foro, que a veces parece muerto y con puras dudas.
  30. 2 points
    Creeme que si quieres tener todo en linea con mercado libre pues mejor contrata a alguien que este de punto fijo en un computador administrando el portal. La API de verdad es pesima ya que no va en linea con los cambios de mercado libre, ademas que mercado libre hace cambios tan seguido que no avisa de estos y cualquier desarrollo de comunicación se queda obsoleto o presenta problemas en poco tiempo. Recomendación, venda por otro lugar si quiere todo automatico.
  31. 2 points
    Wesley, conciliação... já coloquei no post sobre "o que nós queremos na API"
  32. 2 points
    Seria bom ter uma formatação básica. Até sem quebra de linha, é isso mesmo?
  33. 2 points
    Acá te paso un ejemplo : https://api.mercadolibre.com/reviews/search?item_id=MLA650686263
  34. 2 points
    @Marcio Sales dependendo do banco de dados que você utiliza, eu recomendaria você fazer a importação através de bulkinsert. Você poderia jogar os dados para uma tabela temporária e depois usar um recurso do próprio banco para transpor esses dados para as tabelas definitivas. Mysql: https://dev.mysql.com/doc/refman/5.7/en/load-data.html http://stackoverflow.com/questions/14330314/bulk-insert-in-mysql SQL Server: https://docs.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql Abraços. Pierre Noronha
  35. 2 points
    Olá Pessoal, a ideia é fazermos um encontro para passar o conceito básico e geral do uso da API do ML. Auth2; criar, modificar, ... anúncio gerenciar vendas E um pouco mais! Onde: a definir, mas na Grande São Paulo Quando: se tivermos número de pessoas pode ser em março de 2017. Se não tiver interessados agora vamos acumular. Quanto: 2 cerveja/refrigerante/suco Quem: de preferência novatos. No máximo 20 pessoas. É bem restrito. Quem quer? Pode dizer aberto ou mensagem privada. Até mais Rodrigo
  36. 2 points
    podes usar multiget y hacer /items?ids=MLV465432483,MLV465440101...,MLV465692453 y si queres sólo tomar algunos datos podes hacer items?attributes=title,price eso te reducirá mucho el tiempo y las llamadas a la api
  37. 2 points
    Olá, estou tentando criar uma nova aplicação mas está exigindo que os links sejam https. Estou recebendo a seguinte mensagem de erro: Property [callback_url] of class [class com.apps.Application] with value [http://meudominio.com.br]does not pass custom validation. Error is [https must be used] Na URL de callback aceitou sem https mas na "Redirect URI" somente se for https.
  38. 1 point
    Woomelly

    Remover límite de offset

    https://developers.mercadolibre.com.ar/es_ar/items-y-busquedas#Modo-de-busqueda-por-encima-de-1000-registros Saludos cordiales.
  39. 1 point
    Essa notificação ocorre quando o produto sofre alguma alteração , de estoque , desconto aplicado , alteração que você enviou via API,Se o vendedor mexeu no produto via backend etc. O uso dessa informação vem da maneira que você compõe seu fluxo de atualização. Eu recebo meio milhão dessas por dia então eu só uso para detectar se o usuário mexeu em produtos via backend e o resto eu ignoro
  40. 1 point
    rodrigojob

    Ordenação da Etiqueta

    ahhh. vocês passaram a receita do bolo! Eu gero a PLP e pego o código dela e depois faço a mágica. Todo mundo sabe que eu sou mutreteiro!
  41. 1 point
    Neto Braghetto

    Cor secundária

    Agora deu certo, Eu ja tinha feito isso, mas não tinha removido a cor scundaria dos atributos... Mandei assim: {"title":"TESTE __ T\u00eanis Casual Feminino Vizzano Vespa Vermelho","category_id":"MLB183933","price":4000,"accepts_mercadopago":true,"currency_id":"BRL","available_quantity":10,"buying_mode":"buy_it_now","listing_type_id":"silver","automatic_relist":false,"condition":"new","description":{"plain_text":"O T\u00eanis Casual Feminino aposta em shape b\u00e1sico e atual para as produ\u00e7\u00f5es do dia a dia. Leve e confort\u00e1vel, o t\u00eanis \u00e9 ideal para em looks b\u00e1sicos \u2013 com jeans e camiseta.\n\nO T\u00eanis Vizzano vermelho tem a estrutura de cima feita em Couro Ecol\u00f3gico. Sua Palmilha \u00e9 super macia, com o solado em borracha ele garanta maios estabilidade ao caminhar.\n\n\u2022 Nome: T\u00eanis Casual Vespa Vizzano\n\u2022 G\u00eanero: Feminino\n\u2022 Indicado para: Dia a Dia\n\u2022 Ocasi\u00e3o: Dia a Dia\n\u2022 Estilo da Pe\u00e7a: Detalhe Vespa \n\u2022 Material: Couro Ecol\u00f3gico \n\u2022 Material Interno: T\u00eaxtil\n\u2022 Altura do Cano: Cano Baixo\n\u2022 Fechamento: Cadar\u00e7o\n\u2022 Solado: Borracha\n\u2022 Importante: Solado plataforma com 3 cm"},"pictures":[{"source":"http:\/\/localhost:8888\/img\/products\/555x555\/1529150801-14009145785b24fd51ea3480-81945833.jpg"},{"source":"http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-14033319325b24fd524d0b03-08531297.jpg"},{"source":"http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-9783573295b24fd52ce2105-63277925.jpg"},{"source":"http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-6483131995b24fd52da0465-50294186.jpg"},{"source":"http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-15080611955b24fd52f118f4-17283792.jpg"},{"source":"http:\/\/localhost:8888\/img\/products\/555x555\/1529150803-1227526325b24fd530c0137-96975009.jpg"}],"variations":[{"price":4000,"available_quantity":1,"attribute_combinations":[{"id":"23000","value_id":"22029"},{"id":"43000","value_id":"52119"},{"id":"33000","value_id":"51993"},{"id":"43000","value_id":"52119"}],"picture_ids":["http:\/\/localhost:8888\/img\/products\/555x555\/1529150801-14009145785b24fd51ea3480-81945833.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-14033319325b24fd524d0b03-08531297.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-9783573295b24fd52ce2105-63277925.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-6483131995b24fd52da0465-50294186.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-15080611955b24fd52f118f4-17283792.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150803-1227526325b24fd530c0137-96975009.jpg"],"attributes":[{"id":"GTIN","value_id":"7909485559528","value_name":"7909485559528"}]},{"price":4000,"available_quantity":2,"attribute_combinations":[{"id":"23000","value_id":"22031"},{"id":"43000","value_id":"52119"},{"id":"33000","value_id":"51993"},{"id":"43000","value_id":"52119"}],"picture_ids":["http:\/\/localhost:8888\/img\/products\/555x555\/1529150801-14009145785b24fd51ea3480-81945833.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-14033319325b24fd524d0b03-08531297.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-9783573295b24fd52ce2105-63277925.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-6483131995b24fd52da0465-50294186.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-15080611955b24fd52f118f4-17283792.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150803-1227526325b24fd530c0137-96975009.jpg"],"attributes":[{"id":"GTIN","value_id":"7909485559535","value_name":"7909485559535"}]},{"price":4000,"available_quantity":3,"attribute_combinations":[{"id":"23000","value_id":"22033"},{"id":"43000","value_id":"52119"},{"id":"33000","value_id":"51993"},{"id":"43000","value_id":"52119"}],"picture_ids":["http:\/\/localhost:8888\/img\/products\/555x555\/1529150801-14009145785b24fd51ea3480-81945833.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-14033319325b24fd524d0b03-08531297.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-9783573295b24fd52ce2105-63277925.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-6483131995b24fd52da0465-50294186.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-15080611955b24fd52f118f4-17283792.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150803-1227526325b24fd530c0137-96975009.jpg"],"attributes":[{"id":"GTIN","value_id":"7909485559542","value_name":"7909485559542"}]},{"price":4000,"available_quantity":3,"attribute_combinations":[{"id":"23000","value_id":"22035"},{"id":"43000","value_id":"52119"},{"id":"33000","value_id":"51993"},{"id":"43000","value_id":"52119"}],"picture_ids":["http:\/\/localhost:8888\/img\/products\/555x555\/1529150801-14009145785b24fd51ea3480-81945833.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-14033319325b24fd524d0b03-08531297.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-9783573295b24fd52ce2105-63277925.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-6483131995b24fd52da0465-50294186.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-15080611955b24fd52f118f4-17283792.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150803-1227526325b24fd530c0137-96975009.jpg"],"attributes":[{"id":"GTIN","value_id":"7909485559566","value_name":"7909485559566"}]},{"price":4000,"available_quantity":1,"attribute_combinations":[{"id":"23000","value_id":"22037"},{"id":"43000","value_id":"52119"},{"id":"33000","value_id":"51993"},{"id":"43000","value_id":"52119"}],"picture_ids":["http:\/\/localhost:8888\/img\/products\/555x555\/1529150801-14009145785b24fd51ea3480-81945833.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-14033319325b24fd524d0b03-08531297.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-9783573295b24fd52ce2105-63277925.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-6483131995b24fd52da0465-50294186.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150802-15080611955b24fd52f118f4-17283792.jpg","http:\/\/localhost:8888\/img\/products\/555x555\/1529150803-1227526325b24fd530c0137-96975009.jpg"],"attributes":[{"id":"GTIN","value_id":"7909485559580","value_name":"7909485559580"}]}],"attributes":[{"id":"BRAND","value_name":"Vizzano"},{"id":"MODEL","value_name":"T\u00eanis "},{"id":"SHOE_TYPE","value_name":"Casual "},{"id":"SHOE_MATERIAL","value_name":"Couro Ecol\u00f3gico "}],"shipping":{"mode":"me2","local_pick_up":false,"free_shipping":false,"free_methods":[],"dimensions":null,"tags":[]}} e agora caiu Valew Wesley, me salvou
  42. 1 point
    Gustavo A. Díaz

    Tarjetas de prueba

    Diego, sí. Me habían respondido en Soporte en su momento para probar con las tarjetas locales (por ejemplo, Tarjeta naranja) y funcionó bien (se me pasó pasar la data acá). ¡Gracias!
  43. 1 point
    Nico, los codigos que pasaste son válidos: El 1900 es valido y correcto El 1824 corresponde a Gerli o Lanus, pero es valido y aceptado por CA. CABA es del 1000 al 1440 con algunos invalidos en el medio, pero nada de ese rango esta fuera de Capital. En tu caso mi recomendación es 1ro revisar si hay algun problema de lógica que no estemos viendo, tenes forma de colocar acá un dump de la solicitud y la respuesta que haces a mercadopago? obviamente ofuscando tus datos de acceso!
  44. 1 point
  45. 1 point
    Buenas tardes. Creo que el mejor lenguaje es el que el programador / equipo tiene más experiencia. Aquí en la oficina por ejemplo, optamos por PHP. Espero haber ayudado, :)
  46. 1 point
  47. 1 point
    juvian

    Armado de un JSON de propiedades

    Además de value_id, mandá el value_name con el valor de No/Sí. Puede ser que sin value_id funcione también pero mandando id, value_id y value_name me ha funcionado ya.
  48. 1 point
    sandro.bustamante

    Autenticação Php

    Será preciso que o primeiro acesso seja feito com a conta principal onde é feito autorização do app e depois o redirecionamento. Após o primeiro acesso você pode armazenar o token no seu banco de dados e utiliza-lo fazendo refreshToken, assim você consegue fazer as operações que precisa usando a API.
  49. 1 point
    rodrigojob

    Erro de HTTPSTATUS

    Ao marcar uma segunda vez a mensagem como não lida o sistema retorna o status 404, de não encontrada. Mas ele indica que já foi lida. =/messages/mark_as_read/4f15a900d6fb999999999999999df83d9ef1,=Array ( [body] => stdClass Object ( [message] => Messages 4f15a900d6fb999999999999999df83d9ef1 has been already read previously [error] => not_found [status] => 404 [cause] => Array ( ) ) [httpCode] => 404 ) Alguém havia percebido isto? Até logo
This leaderboard is set to Sao Paulo/GMT-03:00