All Activity

This stream auto-updates   

  1. Today
  2. Em PHP, o usuário apenas autoriza e rodo um script pegando as variáveis. mldev, que linguagem você usa?
  3. Não tem o SANDBOX, mas ele pede para ter e eu apoio!
  4. Resuelto... jajajajajaja al final me rei del error.... en el redirect_uri tenia "miempresa.com" y deberia ser exactamente igual a la que se declaro en el "Application Manager", que es "miempresa.com/". Vaya, la diferencia era ese slash (/). Lo puse y asunto arreglado HTTP/1.1 200 OK Date: Wed, 26 Apr 2017 02:14:47 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Cache-Control: max-age=0 Vary: Accept,Accept-Encoding ETag: 49dde47eb8369e2d95812e893ddb4fc1 X-Content-Type-Options: nosniff X-Request-Id: ec805bcf-8606-487e-88ce-8e675740af68 Access-Control-Allow-Origin: * Access-Control-Allow-Headers: Content-Type Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS Access-Control-Max-Age: 86400 X-XSS-Protection: 1; mode=block Strict-Transport-Security: max-age=15724800 {"access_token":"_hash_","token_type":"bearer","expires_in":21600,"scope":"offline_access read write","user_id":176160401,"refresh_token":"_hash_"}
  5. Estoy ya integrando y pues me quedo en la recepcion del code, porque tras generar una consulta POST hacia api.mercadolibre.com en el path de /oauth/token, me bota un error :(, les dejo la trama emitida y recibida: # Trama emitida (POST). POST api.mercadolibre.com/oauth/token?grant_type=authorization_code&client_id=_ID_APP_&client_secret=_Scret_APP_&code=_Code_from_callback_&redirect_uri=https%3A%2F%2Fmiempresa.com Content-Type: application/json {"grant_type":"authorization_code","client_id":"_ID_APP_","client_secret":"_Scret_APP_","code":"_Code_from_callback_","redirect_uri":"https:\/\/miempresa.com" # Trama recibida (respuesta cachada) HTTP/1.1 400 Bad Request Date: Wed, 26 Apr 2017 01:55:53 GMT Content-Length: 0 Connection: keep-alive X-Content-Type-Options: nosniff X-Request-Id: 0c96e-c8d6-4f51-b501-39a1350a Access-Control-Allow-Origin: * Access-Control-Allow-Headers: Content-Type Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS Access-Control-Max-Age: 86400 X-XSS-Protection: 1; mode=block Strict-Transport-Security: max-age=15724800 Realice también las pruebas a mano desde curl, y obtuve: shell# curl -X POST -H "Content-Type; application/json" -d '{"grant_type":"authorization_code","client_id":"_ID_APP_","client_secret":"_KeySecret_APP_","code":"_Code_from_callback_","redirect_uri":"https:\/\/miempresa.com"}' https://api.mercadolibre.com/oauth/token?grant_type=authorization_code&client_id=_ID_APP_&client_secret=_KeySecret_APP_&code=_Code_from_callback_&redirect_uri=https%3A%2F%2Fmiempresa.com {"message":"Wrong number of parameters","error":"invalid_request","status":400,"cause":[]} shell#
  6. Yesterday
  7. Principalmente gracias por su respuesta.... Fijese que me lei detenidamente la documentacion, y este tipo que me esta dando usted no lo menciona la docu del API :S. Asentando un poco mas mi situacion, de entrada pues obtuve la token mediante "Cliente-Side" que fue basicamente generar la URL de "auth.mercado..." y dicho enlace lo coloque en el meta tag <A> para que el usuario diera click, posteriormente maneje el callback para guardar esa token en mi Base de Datos. Pero para el "Server-Side" (antes de ir a ver el Api DOC), existe algun tip de interes ?, porque a como vi asi rapido, en vez de requerir una token, se requiere un "code", que posteriormente ya obtenido (después que el usuario Acepte la aplicación) es cuando se generan llamadas adicionales para finalmente obtener el access_token. Me imagino que por este metodo, ya podre hacer refresqueo ? Saludos !
  8. carrito

    Podrías explicar un poco mas que sería lo que pasaría? Por lo que entendí de lo que dices, si un cliente me compro 3 productos en un carrito y uno de los productos ya no tengo stock, tengo que cancelar la orden completa (Es decir los 3 productos) ? O puedo devolver el dinero por uno de los productos y enviar los otros dos que si tengo?
  9. carrito

    no, no se puede. se cae el paquete que contiene la orden que se quedo sin stock.
  10. carrito

    @Leandro Bertalot Yo creo que con la pregunta, Preetail se refería a si la orden ya esta puesta y ya se pago pero no vas a poder enviar una de los productos. Yo también tenia esta duda. Supongo que puedes cancelar los productos por separado no?
  11. Si su aplicación utiliza el offline_access no deberías obtener el token por el "Client-Side". Hay que realizar el flujo "Server-Side". De este modo, cuando obtengas el primer Access Token, Mercado Libre te envia también un atributo "refresh_token" que es lo que tiene que usar para refrescar su token. Para que lo tengas en cuenta: http://developers.mercadolibre.com/server-side/
  12. Te aconsejo leer mi post:
  13. Buen dia. Estuve leyendo la documentacion del API y tras generar mi primer autentificacion noto que las token solo duran 6 (seis) horas por lo cual en mi caso es un total fiasco, ya que mi plataforma erp actualiza de forma automatica los cambios que el usuario realiza en los costos y existencias del lado del ERP mio hacia mercado, en lo cual tras pasar el tiempo de expiracion tengo que pedirle al usuario que vuelva a sincronizar, sinceramente me parece absurdo. Pero bueno, viendo la configuracion de la aplicacion (Application Manager) existe un parametro o permiso que dice offline access el cual me da entender que puedo hacer movimientos sin necesidad que el Servidor de Mercado valide que el usuario este enlazado o conectado, y ademas tambien observando la API Meli (SDK Oficial de Mercado) existe una clase de refreshToken, asi que creo que puedo generar un proceso cron que cada 10 minutos valide si una sesion esta por expirar y refrescarla. Alguien sabe si puedo extender la valides de una token usando el refreshToken ??? ya que a mi me genera error A continuacion el flujo de datos POST y lo que resibo: # Datos POST (que envio) para Refrescar POST api.mercadolibre.com/oauth/token?grant_type=refresh_token&client_id=_id_de_APP_&client_secret=_key_secret_app_&refresh_token=_TOKEN_ANTERIOR_POR_CADUCAR_ Content-Type: application/json {"grant_type":"refresh_token","client_id":"_id_de_APP_","client_secret":"_key_secret_app_","refresh_token":"_TOKEN_USUARIO_POR_CADUCAR_"} # Datos que Recibo HTTP/1.1 400 Bad Request Date: Tue, 25 Apr 2017 17:24:28 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Accept,Accept-Encoding, User-Agent Cache-Control: max-age=0 X-Content-Type-Options: nosniff X-Request-Id: 3b8d-5fbb-4a02-8bbc-b7a10f23 Access-Control-Allow-Origin: * Access-Control-Allow-Headers: Content-Type Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS Access-Control-Max-Age: 86400 X-XSS-Protection: 1; mode=block Strict-Transport-Security: max-age=15724800 {"message":"Error validating grant. Your authorization code or refresh token may be expired or it was already used.","error":"invalid_grant","status":400,"cause":[]} Nose si es porque aun no caduca y no me deja actualizarlo o que razon :S
  14. @Leandro Bertalot Bueno la razón por que quisiera saber que son de la misma orden es para poder generar una sola orden en Shopify en lugar de generar 3 ordenes separadas para la misma persona que en realidad van en el mismo envío. En cuanto a lo del WebHook de Shipping, menciona lo siguiente: shipments: Recibirás la novedad cuando se crea un nuevo envío o hay una actualización en uno ya existente. Pero entonces si una orden no tiene MercadoEnvios, el WebHook de shipments no se va a disparar no? O se dispararia hasta que agregues de manera manual una guía? Entonces si una orden no tiene MercadoEnvios no tendré la información de envío del cliente? (Por que no va a haber shipping_id) O con que llamada podría llamar la información de envío del usuario? Finalmente si una orden es de recoger en local, esa orden no va a disparar el webhook de Shipping nuca?
  15. 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. ## 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 !
  16. Mira nuestros videotutoriales para tener una intro https://www.acamica.com/mercadolibre y luego haz pruebas siguiendo nuestra documentación http://developers.mercadolibre.com/es/realiza-pruebas/
  17. Last week
  18. Wesley, então vocês alteraram alguma coisa, pois eu já fiz todo este procedimento pelo navegador. Também não consigo ver porque daria erro 404 se a página é a mesma, a não ser que tenha um erro não tratado para um curl com GET onde o endereço é coletado pelo recurso POST. No PHP é fácil de resolver, é só trocar por $_REQUEST, ambos funcionam
  19. El error 404 es porqué no estás haciendo POST para la URL. En el paso 3, hay que hacer un POST y usted estas haciendo GET.
  20. Caros, como posso transformar este Post curl em url php? curl -i -X POST -H "Content-Type: multipart/form-data" -F "file=@/xxxx/arquivo/teste.jpg" "https://api.mercadolibre.com/messages/attachments?access_token=XXXXXXXXXXXXXXXXX" Tentei o seguinte, ele retorna http 200 mas não traz nenhuma informação: $caminho_file = '@/xxxx/caminho/teste.jpg'; $params = array('access_token' => $_SESSION['access_token']); $body = array('file' => $caminho_file); $response = $meli->post('/messages/attachments' . $body, $params); print_r($response); Retorno: Array ( [body] => stdClass Object ( ) [httpCode] => 200 ) Kind Regards
  21. Gracias Rodrigo. Logré solucionar el problema, estaba intentando conseguir el access_token mediante request desde http (GET), descargué Postman e hice el request mediante POST y me devolvió el access_token. Ya cree mi script con llamado ajax y utilicé el SKD de PHP. Nota: En Meli.php tuve que modificar la versión de CURL para que funcionara. Muchas gracias a todos y ya se puede cerrar el post. Saludos!
  22. reclamei dos dados e não vi os passos, lamento. No passo 3 você não fez encode da URI de retorno, porém acho que não faz diferença para o 404. Mas tente Use http://auth.mercadolibre.com.uy/authorization?response_type=token&client_id=5331417057420749 ou https://auth.mercadolibre.com.uy/authorization?response_type=token&client_id=5331417057420749 veja se já não consegue o token
  23. En teoría sí, por eso di la información completa, porque estoy algo perdido con el Api. Gracias
  24. Já há integração do WooCommerce para MercadoLivre
  25. Eu acho que o problema está no script de recebimento no seu site, tanto notificações quanto autenticação você está indicando o mesmo endereço. Você está tratando isto devidamente?
  26. NUNCA, NUNCA, NUNCA abra seus dados de autenticação! Você indica que é para teste, outros podem ler e achar que é normal fazê-lo. Use 99999999999999999999, ccccccccccccccccccccccc e xxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx É isto que dá não ter SANDBOX
  27. Hola mldev, estoy intentando conseguir documentación dentro del foro, pero no logro encontrarla, podrías proporcionarme un link a algún topic dónde esto este resuelto? Update: estoy utilizando este SDK http://github.com/mercadolibre/php-sdk Muchas gracias
  28. Hola Mldev muchas gracias por tú respuesta. Intentaré encontrar alguno. Gracias
  1. Load more activity