• 0
Pedro Queluz

Como puxar todos os pedidos realizados?

Question

16 answers to this question

Recommended Posts

  • 0

Pedro,

 

 

seu problema é entender o que a API está retornando, e é um objeto.

o resultado está dentro de ['body'], então para pegar uma variável, por exemplo sua antiga $order[buyer][nickname] agora é $order['body']->buyer->nickname

 

Sempre leia o tutorial e as mensagens antigas do fórum.

 

Rodrigo

Share this post


Link to post
Share on other sites
  • 1

Ola, tente usa a nova SDK, segue abaixo um sample de como o uso:

<?php
require 'src/meli.php';
//custom
$dados_meli['idSeller'] = '123456';//id de vendedor junto ao mercadolivre
$TotalPaginas = 20;//vendas por pagina
?>

<div class="row">
<?php
//filtros e pagina
$StatusEnvioInicial = !isset($_GET['envio'])?'':$_GET['envio'];
$StatusInicial = !isset($_GET['status'])?'paid':$_GET['status'];
$PaginaAtual = isset($_GET['pgn'])?$_GET['pgn']:'0';

//pega a vendas de acordo a paginacao e filtro
$anuncios = $meli->get('/orders/search/', array('seller'=>$dados_meli['idSeller'],'access_token' => $_SESSION['access_token'], 'sort' =>'date_desc','limit'=>$TotalPaginas,'offset'=>$PaginaAtual, 'order.status'=>$StatusInicial, 'shipping.status'=>$StatusEnvioInicial));

//numero total de vendas
$anuncios_total = $meli->get('/orders/search/', array('seller'=>$dados_meli['idSeller'],'access_token' => $_SESSION['access_token'], 'sort' =>'date_desc', 'order.status'=>$StatusInicial,'shipping.status'=>$StatusEnvioInicial));

//se retorno as vendas
if($anuncios['httpCode']==200){

//pega o total de vendas para pagina
$TotalAnuncios = isset($anuncios_total['body']->total)?$anuncios_total['body']->total:$anuncios_total['body']->paging->total;
$NumPaginas = (int)ceil(($TotalAnuncios/$TotalPaginas)); 
?>

<div class="col-md-6 text-center">
<div class="input-group">
<span class="input-group-addon">Status</span>
<select onchange="location.href=this.value;" class="form-control">
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=paid&envio=<?php echo $StatusEnvioInicial;?>"<?php echo ($StatusInicial=='paid')?' selected':'';?>>Pago</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=confirmed&envio=<?php echo $StatusEnvioInicial;?>"<?php echo ($StatusInicial=='confirmed')?' selected':'';?>>Confirmado</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=cancelled&envio=<?php echo $StatusEnvioInicial;?>"<?php echo ($StatusInicial=='cancelled')?' selected':'';?>>Cancelado</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=payment_in_process&envio=<?php echo $StatusEnvioInicial;?>"<?php echo ($StatusInicial=='payment_in_process')?' selected':'';?>>Pagamento em Processo</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=payment_required&envio=<?php echo $StatusEnvioInicial;?>"<?php echo ($StatusInicial=='payment_required')?' selected':'';?>>Pagamento Exigido</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=&envio=<?php echo $StatusEnvioInicial;?>"<?php echo ($StatusInicial=='')?' selected':'';?>>Todos</option>
</select>
</div>
</div>

<div class="col-md-6 text-center">
<div class="input-group">
<span class="input-group-addon">Envio</span>
<select onchange="location.href=this.value;" class="form-control">
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=<?php echo $StatusInicial;?>&envio=pending"<?php echo ($StatusEnvioInicial=='pending')?' selected':'';?>>Pendente</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=<?php echo $StatusInicial;?>&envio=ready_to_ship"<?php echo ($StatusEnvioInicial=='ready_to_ship')?' selected':'';?>>Pronto para envio</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=<?php echo $StatusInicial;?>&envio=shipped"<?php echo ($StatusEnvioInicial=='shipped')?' selected':'';?>>Enviado</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=<?php echo $StatusInicial;?>&envio=delivered"<?php echo ($StatusEnvioInicial=='delivered')?' selected':'';?>>Entregue</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=<?php echo $StatusInicial;?>&envio=not_delivered"<?php echo ($StatusEnvioInicial=='not_delivered')?' selected':'';?>>Aguardando entrega</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=<?php echo $StatusInicial;?>&envio=cancelled"<?php echo ($StatusEnvioInicial=='cancelled')?' selected':'';?>>Cancelado</option>
  <option value="vendas.php?pg=melitools&t=vendas&pgn=<?php echo $PaginaAtual;?>&status=<?php echo $StatusInicial;?>&envio="<?php echo ($StatusEnvioInicial=='')?' selected':'';?>>Todos</option>
</select>
</div>
</div>

<div class="col-md-12">
<hr>
<table class="table table-striped">
<thead>
<tr>
<th style="width:30px;"></th>
<th style="width:130px;">Venda ID</th>
<th style="width:340px;">Cliente</th>
<th style="width:400px;">Produto</th>
<th style="width:150px;"></th>
<th style="width:120px;">Ações</th>
</tr>
</thead>
<tbody>
<?php
if(isset($anuncios['body']->results[0])){

foreach($anuncios['body']->results AS $k=>$v){

print_r($v);//detalha a venda

}

}else{
echo '<tr><td colspan="9">Nenhum registro disponivel...</td></tr>';
}
?>
</tbody>
</table>

<div class="text-center">
<ul class="pagination">
<?php for($i=0;$i<=($NumPaginas-1);$i++){?>
<li class="<?php echo ($PaginaAtual==$i)?'active':'';?>"><a href="vendas.php?pg=melitools&t=vendas&pgn=<?php echo ($i);?>&status=<?php echo $StatusInicial;?>&envio=<?php echo $StatusEnvioInicial;?>"><?php echo ($i+1);?> <span class="sr-only">(atual)</span></a></li>
<?php } ?>
</ul>
</div>

<br>
<?php
}else{
?>
<div class="form-group">
<div class="alert alert-danger" role="alert">Ops, problema ao conectar api mercadolivre, <a href="javascript:location.reload();">clique aqui!</a></div>
</div>
<?php } ?>
</div>
</div>

funcionando

Screen_Shot_02_25_15_at_04_11_PM.png

Share this post


Link to post
Share on other sites
  • 0

Pedro,

 

usando o orders/recent só vem os que estão abertos mesmo e ainda assim os 50 primeiros.

De qualquer forma para ver mais que 50 você deve usar o "offset", ainda pode variar o "limit", mas o máximo não passa de 50.

 

 

Até mais

Rodrigo

Share this post


Link to post
Share on other sites
  • 0

Para listar os pedidos, estou utilizando este codigo. como ficaria usando o "offset"  ?
 

<?php
require '../src/meli.php';

// Create our Application instance (replace this with your appId and secret).
$meli = new Meli(array(
	'appId'  	=> 'XXXXXXXXXXXX',
	'secret' 	=> 'XXXXXXXXXXXXXXXXXXXX',
));

$userId = $meli -> initConnect();

// Login or logout url will be needed depending on current user state.
if ($userId):
	
	if(isset($_REQUEST['orders_id']) == 1):

        $response = $meli -> postWithAccessToken('/orders', array('orders_id' => $_REQUEST['buyer'], 'id' => $_REQUEST['nickname']));

        $_SESSION['orders_id'] = true;

        header("Location: " . $meli -> getCurrentUrl(), TRUE, 302);

    endif;

    $user = $meli -> getWithAccessToken('/users/me');

   
	$orders = $meli -> getWithAccessToken('/orders/search/recent',   array('seller' => $user['json']['id']));
	
	 
	

endif;
?>
<!doctype html>
<html>
<head>
	<meta charset="UTF-8"/>
	<title>Pedidos</title>
</head>
<body>
	
	<h1>Pedidos</h1>
	<?php if ($userId): ?>
		<p>olá, <?php echo $user['json']['first_name'] ?></p>
		
		<a href="<?php echo $meli -> getLogoutUrl();?>">Sair</a>
		
	<h2>Orders </h2>
	<ul>
		
	
		<?php foreach ($orders['json']['results'] as &$order): ?>
		<li>
		
			
			<?php echo "<p> Numero do Pedido: ". $order[id]; "</p>"; ?>
			
			<?php echo "<p> Status: ". $order[status]; "</p>"; ?>
			<?php echo "<p> Data de Criação: ". $order[date_created]; "</p>"; ?>
			<?php echo "<p> Data de Fechamento: ". $order[date_closed]; "</p>"; ?>
			<?php echo "<p> Moeda: ". $order[currency_id]; "</p>"; ?>
			
			<p><b>Dados do produto</b></p>
			<?php echo "<p> Moeda: ". $order[order_items][0][currency_id]; "</p>"; ?>
			<?php echo "<p> Id do Produto: ". $order[order_items][0][item][id]; "</p>"; ?>
			<?php echo "<p> Nome do Produto: ". $order[order_items][0][item][title]; "</p>"; ?>
			<?php echo "<p> Id da Categoria: ". $order[order_items][0][item][category_id]; "</p>"; ?>
			<?php echo "<p> Quantidade: ". $order[order_items][0][quantity]; "</p>"; ?>
			<?php echo "<p> Preço do Produto: ". $order[order_items][0][unit_price]; "</p>"; ?>
			<?php echo "<p> Total do pedido: ". $order[total_amount]; "</p>"; ?>
			
			<p><b>Informações do Cliente</b></p>
			<?php echo "<p> Id do Cliente: ". $order[buyer][id]; "</p>"; ?>
			<?php echo "<p> Apelido do Cliente: ". $order[buyer][nickname]; "</p>"; ?>
			<?php echo "<p> Email do Cliente: ". $order[buyer][email]; "</p>"; ?>
			<?php echo "<p> Nome do Cliente: ". $order[buyer][first_name]; "</p>"; ?>
			<?php echo "<p> Sobrenome do Cliente: ". $order[buyer][last_name]; "</p>"; ?>
			<p><b>Telefone</b></p>
			<?php echo "<p> Codigo de area: ". $order[buyer][phone][area_code]; "</p>"; ?>
			<?php echo "<p> Telefone: ". $order[buyer][phone][number]; "</p>"; ?>
			<?php echo "<p> Codigo de area: ". $order[buyer][alternative_phone][area_code]; "</p>"; ?>
			<?php echo "<p> Telefone: ". $order[buyer][alternative_phone][number]; "</p>"; ?>
			<p><b>Documento</b></p>
			<?php echo "<p> Tipo: ". $order[buyer][billing_info][doc_type]; "</p>"; ?>
			<?php echo "<p> Numero: ". $order[buyer][billing_info][doc_number]; "</p>"; ?>
			
			<p><b>Informações de pagamento</b></p>
			<?php echo "<p> Id de Pagamento: ". $order[payments][0][id]; "</p>"; ?>
			<?php echo "<p> Status: ". $order[payments][0][status]; "</p>"; ?>
			<?php echo "<p> Valor da transação: ". $order[payments][0][transaction_amount]; "</p>"; ?>
			<?php echo "<p> Moeda: ". $order[payments][0][currency_id]; "</p>"; ?>
			<?php echo "<p> Data de criação: ". $order[payments][0][date_created]; "</p>"; ?>
			<?php echo "<p> Data da Ultima Atualização: ". $order[payments][0][date_last_updated]; "</p>"; ?>
			<?php echo "<p> Razão: ". $order[payments][0][reason]; "</p>"; ?>
			<?php echo "<p> Detalhe de status: ". $order[payments][0][status_detail]; "</p>"; ?>
			<?php echo "<p> Metodo de pagamento: ". $order[payments][0][payment_method_id]; "</p>"; ?>
			<?php echo "<p> Tipo de operação: ". $order[payments][0][operation_type]; "</p>"; ?>
			<?php echo "<p> Tipo de pagamento: ". $order[payments][0][payment_type]; "</p>"; ?>
			<?php echo "<p> Tipo: ". $order[payments][0][id]; "</p>"; ?>
			
			<p><b>Informações de envio</b></p>
			<?php echo "<p> Id de envio: ". $order[shipping][id]; "</p>"; ?>
			<?php echo "<p> Status: ". $order[shipping][status]; "</p>"; ?>
			<?php echo "<p> Tipo de Envio: ". $order[shipping][shipment_type]; "</p>"; ?>
			<?php echo "<p> Data de Criação: ". $order[shipping][date_created]; "</p>"; ?>
			<?php echo "<p> Moeda: ". $order[shipping][currency_id]; "</p>"; ?>
			<?php echo "<p> Valor: ". $order[shipping][cost]; "</p>"; ?>
			<?php echo "<p> Id: ". $order[shipping][receiver_address][id]; "</p>"; ?>
			<?php echo "<p> Endereço: ". $order[shipping][receiver_address][address_line]; "</p>"; ?>
			<?php echo "<p> Cep: ". $order[shipping][receiver_address][zip_code]; "</p>"; ?>
			<?php echo "<p> Complemento: ". $order[shipping][receiver_address][comment]; "</p>"; ?>
			<?php echo "<p> Nome da rua: ". $order[shipping][receiver_address][street_name]; "</p>"; ?>
			<?php echo "<p> Nº : ". $order[shipping][receiver_address][street_number]; "</p>"; ?>
			<?php echo "<p> Id da Cidade: ". $order[shipping][receiver_address][city][id]; "</p>"; ?>
			<?php echo "<p> Cidade: ". $order[shipping][receiver_address][city][name]; "</p>"; ?>
			<?php echo "<p> Id do Estado: ". $order[shipping][receiver_address][state][id]; "</p>"; ?>
			<?php echo "<p> Estado: ". $order[shipping][receiver_address][state][name]; "</p>"; ?>
			<?php echo "<p> Id do Pais: ". $order[shipping][receiver_address][country][id]; "</p>"; ?>
			<?php echo "<p> Pais: ". $order[shipping][receiver_address][country][name]; "</p>"; ?>
			
			<?php echo "<br/>"; ?>
			<?php echo "<br/>"; ?>
			
			<?php echo "-----------------------------------------------------------------------------"; ?>
						
			<?php echo "<br/>"; ?>
			<?php echo "<br/>"; ?>
			
						
		</li>
		
	
		<?php endforeach; ?>
	</ul>
		
		
		
	<?php else:?>
		<div>
			<p>Login usando OAuth 2.0:</p>
			<a href="<?php echo $meli -> getLoginUrl(array('scope' => array('orders')));?>">Login no Mercado Livre</a>
		</div>
	<?php endif?>
	
	
</body>
</html>

Share this post


Link to post
Share on other sites
  • 0

no caso o arquivo "vendas.php" e a própria pagina?

 

tentei rodar o exemplo aqui. mas me da a mensagem de erro  "Ops, problema ao conectar api mercadolivre, clique aqui!"

 

Ola, você tem de usar a SDK mas atual, no seu exemplo acima você esta usando a antiga, e manter a session com o token mercadolibre ativo, definir a id do usuario vendedor, para saber motivos dos erros basta usar um print_r nas vars.

Share this post


Link to post
Share on other sites
  • 0

Olá,
consegui fazer como me explicou, mas alguns dados estou com duvida de como pegar, na Api antiga, buscava o nome do produto assim:
 

echo "<p> Id do Produto: ". $order[order_items][0][item][id]; "</p>"; 
echo "<p> Nome do Produto: ". $order[order_items][0][item][title]; "</p>"; 

Na nova Api como vou trazer esta informação? tentei assim, e não consegui:  echo "<p> PRODUTO: ". $order->order_items->item->title; "</p>";

Share this post


Link to post
Share on other sites
  • 0

Pedro,

 

está faltando o índice do array:

antiga: $order[order_items][0][item][title]

nova $order->order_items->item->title  //cadê o índice????

 

correto:

nova $order->order_items[0]->item->title

 

Até mais

Share this post


Link to post
Share on other sites
  • 0

no caso o arquivo "vendas.php" e a própria pagina?

 

tentei rodar o exemplo aqui. mas me da a mensagem de erro  "Ops, problema ao conectar api mercadolivre, clique aqui!"

 

Olá, Rodrigo!

Tive a mesma dúvida que você e lendo as instruções desse tópico cheguei à mesma mensagem  "Ops, problema ao conectar api mercadolivre, clique aqui!".

Como você avançou a partir daqui? Também quero listar as informações dos pedidos.

Abraço!

Share this post


Link to post
Share on other sites
  • 0

Olá Fernando,

 

a dúvida foi do Pedro e não sei como ele resolveu. Não me lembro de retornar esta mensagem.

Você já usou a conexão pela API do ML? Já usou o SDK antes?

 

Até mais

Rodrigo

 

Olá, Rodrigo!

Tive a mesma dúvida que você e lendo as instruções desse tópico cheguei à mesma mensagem  "Ops, problema ao conectar api mercadolivre, clique aqui!".

Como você avançou a partir daqui? Também quero listar as informações dos pedidos.

Abraço!

Share this post


Link to post
Share on other sites
  • 0

Fernando, 

Você realizou login no ML pela Api?

no meu quando estava dando isso era apenas problema na autenticação...

Pedro, na verdade estou com dificuldades para fazer login. Baixei a SDK tudo de novo e peguei os arquivos de exemplo, inserindo meus dados do aplicativo, mas não estou conseguindo logar. Poderia me mostrar um exemplo básico e funcional do login?

Share this post


Link to post
Share on other sites
  • 0

Olá Fernando,

 

a dúvida foi do Pedro e não sei como ele resolveu. Não me lembro de retornar esta mensagem.

Você já usou a conexão pela API do ML? Já usou o SDK antes?

 

Até mais

Rodrigo

Olá, Rodrigo!

Na verdade sou novato em uso de SDK, Lendo a documentação e com um pouco de programação básica em PHP pensei que seria o suficiente para fazer consultas simples, como por exemplo, listar os dados de alguns pedidos. Usando o exemplo anterior do Pedro (com API antiga, que ele postou aqui) até consegui listar. Mas quero utilizar a API nova e o seu exemplo não funcionou comigo. Deve ser algo bem básico que eu estou deixando de fazer. Poderia me ajudar? Obrigado!!!

Share this post


Link to post
Share on other sites
  • 0

Fernando, 

quais os passos que você executou?

Sua aplicação já foi autorizada?

Já tem um access_token?

 

Até mais,

Rodrigo

Olá, Rodrigo!

Os passos que executei foram:

1)Baixei o SDK para PHP e salvei os arquivos na pasta do meu servidor local (localhost);

2)Abri alguns dos arquivos de exemplo (como o example_login.php) e atualizei com minhas informações (id do aplicativo e secret key);

3) Tentei rodar o php. Me retorna uma mensagem:

 

Array

(

[access_token] =>

[expires_in] => 1437477644

[refresh_token] =>

)

 

Como não estou obtendo um access_token dessa forma, estou pegando um "manualmente" pelo link http://developers.mercadolibre.com/first-step/inserindo o ID da minha aplicação no campo onde diz "Give it a try with your app".

Aí, com o Access_token em mãos, atualizo manualmente um php bem simples que criei para obter os dados dos pedidos (que listo em seguida). Ele me retorna em Json, que copio e colo num conversor de Json para CSV. Aí é que importo para um sistema de gerenciamento que criei.

Eu preciso deixar esses procedimentos manuais e obter as informações das vendas automaticamente.

 

Segue o código do php que uso (onde insiro o Access_token manualmente, pois não estou conseguindo obtê-lo pelo php):

 

<?php    
$seller = 999999999;
$token = 'AQUI INSIRO O ACCESS KEY QUE CONSIGO MANUALMENTE NO SITE http://developers.mercadolibre.com/first-step/';
$nro_pedidos = 20;
$nao_considera_primeiros = 0;
$ordem = 'date_desc';
 
 
$url = 'https://api.mercadolibre.com/orders/search?seller='. $seller . '&access_token=' . $token . '&sort=' . $ordem .'&offset=' . $nao_considera_primeiros . '&limit=' . $nro_pedidos;
 
 
echo'<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
?>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now