felipe.ksw

Members
  • Content Count

    20
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by felipe.ksw

  1. Boa noite pessoal, Estou com uma dificuldade para enviar o XML da NFe via API. Estou usando o código abaixo e recebo a mensagem que o "XML está mal formado" se codifico com o JSON ou que "está faltando o corpo do POST" se não codifico com o JSON. O XML está OK, pois o mesmo XML que dá problemas na API, depois envio ele pela interface e ele vai normal (faço a consulta de validação via API) Provavelmente alguma coisa do CURL que não estou sabendo montar... Alguma Sugestão? Obrigado Felipe $xmlfile = file_get_contents ( '35190112612913000148550010000436961611034429_v4.00-procnfe.xml' ); //echo $xmlfile.PHP_EOL; $cabecalho = array ( 'Content-Type: application/xml' ); $arrCampos = array ( 'data' => $xmlfile ); //$arrCampos = json_encode ( $arrCampos ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.mercadolibre.com/shipments/'.$shippingId.'/invoice_data/?access_token='.$accessToken.'&siteId=MLB'); curl_setopt($ch, CURLOPT_HTTPHEADER, $cabecalho); curl_setopt($ch, CURLOPT_POSTFIELDS, $arrCampos); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $resposta = curl_exec($ch); curl_close($ch); //echo curl_error ( $ch ).PHP_EOL; $arrRet = json_decode($resposta, true); print_r ( $arrRet ); Array ( [status] => 400 [message] => Malformed XML [error] => malformed_XML [cause] => [internal_cause] => Array ( ) ) Array ( [status] => 400 [message] => Required request body is missing [error] => empty_body [cause] => [internal_cause] => Array ( ) )
  2. Pessoal, boa tarde. Não estou conseguindo fazer uma alteração nos anúncios na parte de imagens. Subi uma foto usando a recomendação da documentação (https://developers.mercadolivre.com.br/pt_br/trabalho-com-imagens). Gostaria de inserir essa foto como seguda foto em alguns anúncios, mas para isso não estou conseguindo nem alterar um de teste. Usei como teste o código abaixo, mas sem sucesso. Tentei algumas variações, mas não consegui achar o caminho correto (tentei me basear na documentação). Vocês poderiam me dar uma ajuda? $cabecalho = array ( 'Content-Type: application/json', 'Accept: application/json' ); $arrCampos = array ( 'pictures' => array ( 'id' => '850425-MLB25430578101_032017', 'id' => '914518-MLB29034879973_122018', 'id' => '228325-MLB25430573356_032017', 'id' => '641325-MLB25430573783_032017', ) ); //$arrCampos = json_encode ( $arrCampos ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://api.mercadolibre.com/items/'.$mlbId.'?access_token='.$accessToken); curl_setopt($ch, CURLOPT_HTTPHEADER, $cabecalho); curl_setopt($ch, CURLOPT_POSTFIELDS, $arrCampos); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $resposta = curl_exec($ch); curl_close($ch); $arrRet = json_decode($resposta, true); print_r($arrRet); A sequencia de Ids das fotos quye está atualmente no anúncio é essa: Array ( [0] => Array ( [id] => 850425-MLB25430578101_032017 ) [1] => Array ( [id] => 228325-MLB25430573356_032017 ) [2] => Array ( [id] => 641325-MLB25430573783_032017 ) ) Obrigado
  3. gbandoni, obrigado pelo retorno e pelo link da documentação, deu tudo certo e lá tem tudo que preciso para essa parte. Abs. Felipe
  4. Opa, deu certo... estava faltando o "siteId=MLB" eu não tinha tentado como paramero na URL, obrigado! Só aproveitando o tópico, dá para alterar a NF que já foi registrada em uma venda? Vi na documentação como adicionar, mas não sei se funciona para alterar também.... vocês sabem? Obrigado Felipe
  5. ERP do cliente... todo o processo ocorre fora e depois eles inserem a chave NFe no campo "Informar NF-e" na interface.
  6. Pessoal, boa tarde. Estou precisando recuperar a chave NFe de algumas vendas mas não estou conseguindo... Buscando aqui no fórum achei alguns tópicos mas não me levaram a um resultado. Tentei os recursos /shipments/{shipmentId}/invoice_data; /orders/{orderid}/invoice_data; /orders/{orderid}/invoice_data/xml com o GET (intuito de recuperar o numero da NF ou a chave de 40 digitos) e não deu certo. Na documentação não achei muito sobre isso. Alguém tem alguma sugestão? O cliente usa o mercado envios coleta. Obrigado Felipe
  7. Pessoal, desculpa! Na verdade tinha um erro nas configuração do curl_setopt_array... Funciona normal com o sinal de + (NOME+K2016). Abs Felipe
  8. Pessoal, bom dia. estou tentando recuperar algumas informações publicas de usuários cujo o nickname tem espaço e não estou conseguindo... tem alguma codificação especial para isso? Estou usando a chamada: https://api.mercadolibre.com/sites/MLB/search?nickname= O exemplo de nickname é assim: NOME K2016 Já tentei passar NOME+K2016, NOME%20K2016 e não deu certo, não retorna nada. Obrigado
  9. opa... Agora entendi bem o fluxo (depois de apanhar um pouco), e também descobri o erro na minha configuração do curl.. Deu certo! Como rotina, eu fiz um script para refresh que faz a busca pela chamada /users/me?access_token= e verifico se a 'chave' id bate com o id do cliente se nao bater é que o token expirou ai entro com o processo de refresh. Como solicitei o token inicial em uma hora cheia (13h00), coloquei o cron para executar a cada hora cheia + 1 minuto... Ainda não expirou nenhum, mas acredito que vai funcionar de boa.... Obrigado pela Ajuda!
  10. Bom, como estava consufo parti do zero. Criei um aplicativo novo e usei a chamda https://auth.mercadolibre.com.ar/authorization?response_type=code&client_id=App_id ele me direcionou para a tela para permitir esse novo app, confirmei e ele me direcionou direto para a minha URL de retorno já com o access_token (com data de expiração) e não com o AUTHORIZATION_CODE como está na documentação. Nesse ponto a dúvida é : tem algum problema isso uma vez que me retornou um token válido? A dúvida seguinte é: daqui 6 horas esse token vai expirar e vou precisar fazer o refresh com essa chamada: https://api.mercadolibre.com/oauth/token?grant_type=refresh_token&client_id=APP_ID&client_secret=SECRET_KEY&refresh_token=REFRESH_TOKEN onde o REFRESH_TOKEN é esse token que eu gerei anteriormente e está expirado, certo? Obrigado
  11. OK, a documentação que li é a mesma passada (Autorização Server-Side)... fiz os passos iniciais (tudo via browser) e funcionaram... peguei o auth code, e solicitei o token, funcionou tudo certinho via browser... Mas na hora de automatizar me deparei com esse primeiro problema que coloquei acima. Sobre o url de retorno, como eu posso fazer se estou tentando gerar um token a partir de um servidor dentro da rede do cliente? Não tenho uma url de callback. Deixei a do mercado pago (exemplos), pois funcionou quando fiz a chamada direta no browser... mas não sei qual está registrada na aplicação, amanhã confirmo com o cliente. Eu ainda não consegui chegar na parte do refresh_token... Bom, olhando as chamadas do curl, parecem OK ou tem algum parametro/config que estou fazendo de errado? Obrigado
  12. Pessoal, boa tarde. Eu estou com dificuldades de entender a documentação da API para gerar um novo token. Hoje, quando o cliente precisa ele acessa esse link: http://developers.mercadolibre.com/pt-br/automovel-autenticacao-autorizacao/#token para gerar o token e posteriormente executar os relatórios que ele precisa. Essa é a forma que foi desenvolvido para ele. Mas como quero automatizar uma verificação, queira colocar na cron uma tarefa recorrente e para isso vou precisar gerar novos tokens a cada 6 horas que eu também colocaria como uma outra tarefa na cron. O problema é que não estou conseguindo me entender com as chamadas curl para essa finalidade... Segue abaixo parte do codigo que estou usando, ele não me retorna nada, nenhuma msg... $client_id = '232114xxxxxxxx'; $client_secret = 'h0UuuufVHXGaCjxxxxxxxxxxxxx'; $code = 'TG-5addf4a2e4b0a6add07c1556-xxxxxxxxxx'; $urlReturn = 'https://www.mercadopago.com'; $chUrl = 'https://api.mercadolivre.com/oauth/token?grant_type=authorization_code&client_id='.$client_id.'&client_secret='.$client_secret.'&code='.$code.'&redirect_uri='.$urlReturn; $cabecalho = array ( 'Accept: application/json', 'Content-Type: application/x-www-form-urlencoded', 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $chUrl); curl_setopt($ch, CURLOPT_HTTPHEADER, $cabecalho); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $resposta = curl_exec($ch); // DEBUG echo $resposta.PHP_EOL; $arrRet = json_decode($resposta, true); echo $arrRet['access_token']; // DEBUG print_r ( $arrRet ); O que estou fazendo de errado? Obrigado Felipe
  13. Rodrigo, Via base do cliente não tem como, pois a requisição de venda entra tudo como "venda balcão"... Nesse caso não tenho como saber se a data de ultima venda do produto foi pelo ML, balcão ou site... Essa questão de retornar as vendas pode ser uma boa... se eu conseguir recuperar as vendas de um determinado período, faço algo local para retornar o que ele gostaria... Nesse caso, como sou novo com ML, vc poderia em dar uma dica de qual a chamada ou doc. desse tipo de assunto? Obrigado Felipe
  14. Pessoal, Meu cliente quer fazer uma análise mais estratégica dos anúncios dele e um dos dados que ele gostaria é a data de ultima venda realizada em um determinado anuncio... Exemplo, tenho o anuncio MLB960743XXX com 15 vendas feitas a venda 15 foi feita hoje 13/04... ele queria algo assim: MLB960743XXX - 15 - 13/04/2018. A formatação, recuperar a info dentro do json, blz... a minha dúvida é a chamada no webservice para retornar essas info (se tiver uma chamada para isso)\ Obrigado Felipe
  15. Putz, entendi... Fiquei "quase" feliz No caso, como eu posso saber qual é o desconto que eu tenho que aplicar no valor do frete? Eu vi que esse desconta está ligado ao "nível" do meu cliente e a categoria do produto, mas não achei como fazer essa ligação. Alguma dica? Obrigado
  16. Show!!! Deu certo! só tem um detalhe, esse recurso que vc me passou retorna o valor do frete inteiro... mas a partir dessa dica sua achei na documentação o recurso abaixo que retorna o valor final que será cobrado https://api.mercadolibre.com/items/MLB739217081/shipping_options/free estou testando para ver se funciona como regra geral... Obrigado Abs!
  17. @mldev obrigado pelo retorno... Então, direto do item eu não achei esse valor de custo do frete... usei essa chamada: https://api.mercadolibre.com/items/MLB999999999?access_token=TOKEN não sei se é a melhor chamada. Nesse caso eu tenho um custo de 15,45, já com 50% de desconto, mas não consigo localizar nem os 15,45 e nem os 30, 90 (valor sem desconto pela reputação)...
  18. Senhores, tudo bem? Eu estou otimizando alguns scripts para um cliente e precisaria recuperar o custo do frete para cada anuncio do meu cliente. No caso seria quando aparece frete gratis para o comprador, mas tem o valor cobrado para o vendedor. Não achei uma chamada que me retorna esse valor (ou não prestei atenção)... Procurei na pate de itens e na parte de categorias. Alguma dica? Obrigado, Felipe