Davi Generoso

Members
  • Content Count

    7
  • Joined

  • Last visited

  1. Davi Generoso

    Como fazer a paginação das vendas (orders/search)?

    Olá SGUINLE!! Problema RESOLVIDO! Achei uma rotina aqui no fórum que consegui usar de base para adaptar e fazer a consulta usando offset! Fiz uma função recursiva que monta as chamadas pra cada pagina e mostra os resultados! Segue a rotina caso alguém precise: public function GetListaPedidos($StatusEnvioInicial = null, $StatusInicial = null, $PaginaAtual = null){ $debug = True; //$this->debug; $seller_id = $this->getSeller_idSeVazio(); $TotalPaginas = 30;//vendas por pagina //filtros e pagina //http://developers.mercadolibre.com/pt-br/envio-de-produto/#Status-do-envio if(!isset($StatusEnvioInicial)) $StatusEnvioInicial = !isset($_GET['envio'])?'pending':$_GET['envio']; //http://developers.mercadolibre.com/pt-br/gerenciamento-de-vendas/#Status-da-ordem if(!isset($StatusInicial)) $StatusInicial = !isset($_GET['status'])?'paid':$_GET['status']; if(!isset($PaginaAtual)) $PaginaAtual = isset($_GET['pgn'])?$_GET['pgn']:'0'; if($debug){ if($PaginaAtual == 0) echo '<br>GetListaPedidos()'; } $meli = new Meli($this->appId, $this->secretKey, $this->S_access_token, $this->S_refresh_token); $offset = $PaginaAtual * $TotalPaginas; $filtros = array('access_token'=>$this->S_access_token, 'seller'=>$seller_id, 'sort' =>'date_desc', 'limit'=>$TotalPaginas, 'offset'=> $offset, 'order.status'=>$StatusInicial, 'shipping.status'=>$StatusEnvioInicial ); $filtrosTotalVendas = array('access_token'=>$this->S_access_token, 'seller'=>$seller_id, 'sort' =>'date_desc', 'order.status'=>$StatusInicial, 'shipping.status'=>$StatusEnvioInicial ); //pega a vendas de acordo a paginacao e filtro // $anuncios = $meli->get('/orders/search/', array('seller'=>$seller_id,'access_token' => $this->S_access_token, 'sort' =>'date_desc','limit'=>$TotalPaginas,'offset'=>$PaginaAtual, 'order.status'=>$StatusInicial, 'shipping.status'=>$StatusEnvioInicial)); $anuncios = $meli->get('/orders/search/', $filtros); //numero total de vendas // $anuncios_total = $meli->get('/orders/search/', array('seller'=>$seller_id,'access_token' => $this->S_access_token, 'sort' =>'date_desc', 'order.status'=>$StatusInicial,'shipping.status'=>$StatusEnvioInicial)); $anuncios_total = $meli->get('/orders/search/', $filtrosTotalVendas); //se retorno as vendas if($anuncios['httpCode']==200){ //pega o total de vendas para pagina $TotalRegistros = isset($anuncios_total['body']->total)?$anuncios_total['body']->total:$anuncios_total['body']->paging->total; if($debug){ if($PaginaAtual == 0) echo '<br>Total de registros encontrados: '. $TotalRegistros . '<hr>'; } $NumPaginas = (int)ceil(($TotalRegistros/$TotalPaginas)); if($debug){ if($PaginaAtual == 0) echo '<table class="table table-striped"> <thead> <tr> <th style="width:50px;">Num.</th> <th style="width:80px;">Venda ID</th> <th style="width:130px;">Data</th> <th style="width:300px;">Cliente</th> <th style="width:500px;">Produto</th> <th style="width:25px;">Total</th> <th style="width:30px;">Status</th> <th style="width:50px;">Status Envio</th> </tr> </thead> <tbody>'; }; if(isset($anuncios['body']->results[0])){ $contador = 0; foreach($anuncios['body']->results AS $k=>$v){ $contador = $contador + 1; //echo '<pre>'; print_r($v); echo '</pre>'; if($debug){ $urlAbrirPedido = '<a href="https://myaccount.mercadolivre.com.br/sales/'.$v->id.'/detail?type=recent" target="_blank">'.$v->id.'</a>'; $registroAtual = ($PaginaAtual*$TotalPaginas) + $contador; $HTMLPaginaAtual = $PaginaAtual + 1; echo '<tr> <td style="width:30px;">'. $HTMLPaginaAtual . ' - ' . $registroAtual .'</td> <td style="width:60px;">'. $urlAbrirPedido .'</td> <td style="width:240px;">'. $v->date_created .'</td> <td style="width:300px;">'. $v->buyer->nickname .'</td> <td style="width:400px;">'. $v->order_items[0]->item->title .'</td> <td style="width:150px;">'. $v->total_amount .'</td> <td style="width:150px;">'. $v->status .'</td> <td style="width:150px;">'. $v->shipping->status .'</td> </tr>'; } } }else{ if($debug){ echo '<tr><td colspan="9">Nenhum registro disponivel...</td></tr>'; } } //Se for a primeira página, busca pelsa demais chamando a função novamente if($PaginaAtual == 0){ for($i=1;$i<=($NumPaginas-1);$i++){ $this->GetListaPedidos($StatusEnvioInicial, $StatusInicial, $i); } } if($debug){ if($PaginaAtual == $NumPaginas) echo '</tbody> </table>'; } } } Obrigado pela ajuda!
  2. Bom dia pessoal, peço desculpas desde já, pois imagino que seja algo simples, mas já fiz muitos testes e busquei na documentação e fórum e não consegui resolver este problema, então gostaria da ajuda de vocês! Preciso buscar todos os pedidos com determinado status e listar os mesmos! Como o limite é de 50 pedidos por página no máximo, entendo que precisaria usar o offset ou scan, mas já tentei com os dois e não sei se estou fazendo algo errado mas não consigo pegar mais de 50 itens! Segue exemplo de URL: /orders/search?seller=xxxxx&access_token=yyyyyyy&offset=0&limit=50&sort=date_desc&shipping.status=pending Nesta consulta me traz corretamente os primeiros 50 registros e me diz que tenho 135 registros no total. Em seguida, se chamo pela mesma URL mudando o offset, não traz resultados e mostra a mensagem a seguir: [message] => Oops! Something went wrong... [error] => bad_request [status] => 400 [cause] => Array Alguém poderia me auxiliar com alguma informação ou exemplo que busque os pedidos com paginação? Desde já agradeço a todos!
  3. Olá Pessoal, obrigado a todos que ajudaram neste tópico, por fim consegui descobrir o que era! Tenho um serviços de terceiros que uso na integração (Tray.com.br) e mesmo quando o produto estava marcado pra não integrar o sistema deles estava alterando o frete e criando o problema que reportei! Entrei em contato com eles e outras pessoas já estavam reclamando da mesma situação! No fim da semana conseguiram resolver e tudo voltou ao normal, então não tinha a ver com o Mercado Livre diretamente! Tópico Encerrado! Muito Obrigado a todos!
  4. Olá sguinle, Estou fazendo alguns testes ainda, mas já desabilitei todas as integrações que poderiam estar influenciando (alterando o anúncio) e mesmo assim se eu altero em alguns instantes volta o problema! Alguém sabe dizer se existe um LOG onde posso verificar as alterações do anúncio? Seria uma alternativa pra eu saber se está sendo alterado via API ou algo assim!
  5. Olá pessoal, tenho vários anúncios com forma de envio personalizada (Carta Registrada com custo fixo X)! Sempre vendi com esta formato e sempre funcionou bem (estou enviando todo meu anúncio via API)! De uns dias pra cá eu modifico a opção de frete dos anúncios (seja por API ou pelo site) e fica correto aparentemente, mas em pouco tempo (minutos, as vezes ate segundos) o anúncio parece perder a configuração de frete que fiz e fica com frete constando como "Consultar frete"... Ou seja, fica como se eu não tivesse frete configurado no anúncio! Com isso não mostra o valor pro cliente nem permite que ele pague o frete junto à compra o que está me dando bastante prejuízo, pois muitos clientes deixam de comprar em função disso! Alguém sabe porque isso ocorre ou já teve problema parecido?
  6. Davi Generoso

    Quebra de linha na descrição de produtos não funciona

    Olá xsbr... Muuuuito obrigado! Fiz o teste e realmente era isso! Até pesquisei e de fato parece que o PHP interpreta diferente quando se utiliza aspas duplas, não sabia disso, vivendo e aprendendo! Com as aspas duplas o \n funciona perfeitamente! Problema resolvido!
  7. Olá pessoal, bom dia! Estou atualizando a descrição dos meus produtos via API, mas não consigo fazer funcionar a quebra de linha! Antes de mais nada, já olhei na documentação da API e segundo consta lá, um \n seria necessário para quebra de linha, mas não consegui fazer funcionar, já tentei \n, \n\r, \r\n, \N, <BR> e nada disso funcionou! O sistema atualiza a descrição, mas não trata as quebras de linha! Alguém sabe como incluir uma quebra de linha simples na descrição do produto via API? Segue meu código atual: $filtros = array( "plain_text" => 'Descrição do produto \n linha 2', "access_token"=>$_SESSION['access_token'] ); $resultado = $meli->put('/items/'. $codProduto .'/description?access_token='.$_SESSION['access_token'], $filtros);