rodrigojob

Moderators
  • Content Count

    1,510
  • Joined

  • Last visited

  • Days Won

    220

Everything posted by rodrigojob

  1. Olá, alguém recebe as notificações referentes aos pagamentos? Até mais Rodrigo
  2. Olá, muitos pedem códigos prontos, isto eu não concordo, devem aprender, ralar, estudar! Mas no caso de vendas não honradas vale a pena distribuir. Tem uso de filtros, paginação, ordenação, ... dá para os novatos aproveitarem um pouco. Estava identado, mas o fórum não está preparado para receber código. $conta=0; $c = 0; for ($c = 0; $c <= 10; $c++){ //repeticao 0-10 $params = array('seller' => $usuarioid', 'access_token' => $access_token, 'order.status' =>'confirmed', 'limit' => '50', 'sort' =>'date_desc', 'offset' => $conta); $vendax = $meli->get('/orders/search/recent', $params); $vendas = $vendax['body']; unset($vendax); // print_r($vendas); // echo '<br><br>'; // break; foreach($vendas->results as $venda){ $tem = 0; //tenho um controle para saber se a venda já está na base, mas cortei devido a não ter sentido para todos. if ($tem==0){ $i++; $id = $venda->id; if ($venda->shipping->status !='shipped' && $venda->tags[0]!='paid' && $venda->feedback->sale->id==NULL){ echo "id_venda: "; print_r($venda->id); echo "<br>status_envio: "; print_r($venda->shipping->status); echo "<br>status_venda: "; print_r($venda->status); echo "<br>apelido: "; print_r($venda->buyer->nickname); echo "<br>email: "; print_r($venda->buyer->email); echo "<br>telefone: "; print_r((string)$venda->buyer->phone->area_code .' ' . (string)$venda->buyer->phone->number); echo "<br>entrada: "; print_r($venda->seller->nickname); echo "<br>data: "; print_r(substr($venda->date_created, 0, 10)); echo "<br>"; $data = new DateTime(substr($venda->date_created, 0, 10)); $dif = $hj->diff($data)->days; /* if ($dif>=1){ echo 'listar comentarios: <br>'; //$lcx = $meli->get('/orders/'. $venda->id. '/notes/', $params); $lc = retornacomentario($meli, $params, $venda->id); print_r($lc); if (count($lc)<1){ echo 'operadora: '; $operadora = consultaoperadora((string)$venda->buyer->phone->area_code . (string)$venda->buyer->phone->number); print_r($operadora); } echo '<br>'; } */ if ($venda->shipping->status =='to_be_agreed'){//if sem endereço if ($dif>2 && $dif<10){ $lc = retornacomentario($meli, $params, $venda->id); //print_r($lc); if (count($lc)<1){ echo 'ação: avisar<br>'; print_r($lc); echo '<br>criar novo aviso sem pagamento: <br>'; $novo = $meli->post('/orders/'. $id. '/notes/', array('note' => 'aviso - ' . date('Y-m-d h:i:s')), $params); print_r($novo); $msg = "Olá " . ucwords((string)$venda->buyer->first_name) . ", <br><br> você realizou uma compra no MercadoLivre e ainda não realizou o pagamento. <br> Para receber o produto comprado é necessário que seja pago o produto e o frete.<br> Aguardo sua resposta para preparar o pacote.<br><br> Você pode fazer o pagamento pelo MercadoPago(cartão ou boleto) ou mesmo por depósito (Itaú, Bradesco, Banco do Brasil ou Caixa)<br><br> Por favor responder o mais breve possível, pode ter outra pessoa interessada no produto que você comprou.<br><br> Atenciosamente,<br> XXXXXXXXXXXXXX<br> XXXXXXXX "; // EnviaEmail((string)$venda->buyer->email, "Compra No MercadoLivre", $msg); }else{ echo '<br><br>alteracao: ' . (string)$lc[0]->id . '<br>'; // $alteracao = $meli->put('/orders/'. $id. '/notes/' . (string)$lc[0]->id, array('id'=>(string)$lc[0]->id, 'note' => (string)$lc[0]->note . '- tadá!!!! ' . date('Y-m-d h:i:s')), $params); // print_r($alteracao); } echo '<br>'; }elseif($dif>=10){ echo 'ação: qualificar sem pagamento<br>'; $parametros = array( 'version' => '3.0', 'rating' => 'neutral', 'fulfilled' => false, 'reason'=> 'THEY_NOT_HONORING_POLICIES', 'restock_item' => true, 'has_seller_refunded_money' => false, 'message' => 'Não honrou a negociação e não respondeu email :[ Quando quiser o produto é só entrar em contato, se eu tiver o produto em estoque faremos negócio.'); //echo ' - vendaid<br>'; $feedback = $meli-> post('/orders/' . $id . '/feedback', $parametros, $params); print_r($feedback); echo '<br>'; } }//if sem endereço if ($venda->shipping->status =='pending'){//falta pagamento if ($dif>5 && $dif<14){ $lc = retornacomentario($meli, $params, $venda->id); //print_r($lc); if (count($lc)<1){ echo 'ação: avisar<br>'; echo '<br><br>criar novo aviso pagamento: <br>'; $novo = $meli->post('/orders/'. $id. '/notes/', array('note' => 'pagamento - ' . date('Y-m-d h:i:s')), $params); print_r($novo); $msg = "Olá " . ucwords((string)$venda->buyer->first_name) . ", <br><br> você realizou uma compra no MercadoLivre e ainda não realizou o pagamento que iniciou. <br> Para receber o produto comprado é necessário que seja pago, para que o MercadoLivre libere para eu enviar o pacote.<br><br> Por favor responder o mais breve possível, pode ter outra pessoa interessada no produto que você comprou.<br><br> Atenciosamente,<br> xxxxxxxxxxxxxxx<br> XXXXXXXXXXXXXXXXXXXXX "; EnviaEmail((string)$venda->buyer->email, "Compra No MercadoLivre - falta pagamento", $msg); }else{ echo '<br><br>alteracao: ' . (string)$lc[0]->id . '<br>'; // $alteracao = $meli->put('/orders/'. $id. '/notes/' . (string)$lc[0]->id, array('id'=>(string)$lc[0]->id, 'note' => (string)$lc[0]->note . '- tadá!!!! ' . date('Y-m-d h:i:s')), $params); // print_r($alteracao); } echo '<br>'; }elseif($dif>=14){ echo 'ação: qualificar pagamento iniciado<br>'; $parametros = array( 'version' => '3.0', 'rating' => 'neutral', 'fulfilled' => false, 'reason'=> 'BUYER_NOT_ENOUGH_MONEY', 'restock_item' => true, 'has_seller_refunded_money' => false, 'message' => 'Não honrou a negociação :[ Quando quiser o produto é só entrar em contato, se eu tiver o produto em estoque faremos negócio.'); //echo ' - vendaid<br>'; $feedback = $meli-> post('/orders/' . $id . '/feedback', $parametros, $params); print_r($feedback); echo '<br>'; } }//falta pagamento echo "<br><br>"; }//if não enviada }//não for reportada }//foreach de vendas $conta = $conta + 50; if ($i<50){ break; } } //repeticao 0-10
  3. so, you can mark relist if not out of stock, or create relist when item closed. For this function you can use item callback, or a script that verify items closed.
  4. Olá Andres, verifique os attempts , se for mais de 1 é que o servidor não conseguiu te passar da primeira vez. Outra coisa é que pode ter ocorrido um evento após, por exemplo a qualificação. Todo evento que ocorre na order gera uma notificação. Quais são: -entrada -pagamento -envio -recebimento -qualificação do comprador -qualificação do vendedor -abertura de reclamação Até mais Rodrigo
  5. Hello Tom, don´t have delete, but you can chage status for closed RodrigoJob
  6. Caio, não preciso fazer isto porque o meu é o me2 e ele faz automaticamente. Mas tente fazer um POST, pois é um novo status e deve manter os dados do evento anterior. Veja se funciona. Até mais RodrigoJob
  7. rodrigojob

    Bugs

    maravilha!!!! veja também a data de validade do seu desconto!
  8. Olá Thiago, você disse que passou os dados, e nem deve mostrá-los aqui, mas vou destrinchar: grant_type=authorization_code client_id=999999 // seu user_id do ML, o código numérico que é referente ao seu login client_secret=0df0sd23j4bwdivuyf3j4nb5 //é o código da aplicação (appid) não entendo o motivo do ML ter trocado os nomes! code=098347r8d9d8v7i34m\nxoiuy4/ur3iwedjks34 //esta informação já vem de um passo anterior redirect_uri=http%3A%2F%2Fwww.seusite.com.br%2FML%2Flogin.php // é a URL com encode Então o problema pode ser a URL que você está fornecendo. parece que tem um $, pode ser quando você repassou para cá e tirou as variáveis. Veja aí Rodrigo
  9. Olá Pessoal, fui mexer numa coisa que eu queria fazer, ainda na antiga API, que é a manipulação de "comentários" na venda. O comentário é um texto qualquer que você pode inserir no registro de venda que o comprador não verá, mas serve para você fazer uma marcação, por exemplo a operadora de telefonia. Dã! Qualquer coisa. Bem, mãos a massa! Abaixo estão os códigos de como listar, criar, alterar e apagar um comentário Está em PHP. $id = $_REQUEST['orderId']; $params = array('seller' =>999999999999, 'access_token' => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxx-xxxxxxxxx); echo 'parametros: <br>'; print_r($params); //simplesmente listar o que já existe - eu criei pelo browser um comentário, poderia ter feito pela API. echo '<br><br>listar original: <br>'; $listar1 = $meli->get('/orders/'. $id. '/notes/', $params); print_r($listar1); //alteração - observe que é um array, e o último comentário adicionado é o item 0 do array. Neste exemplo eu adiciono informação sem apagar, claro que você pode substituir o que está lá. echo '<br><br>alteracao: ' . (string)$listar1['body'][0]->results[0]->id . '<br>'; $alterar = $meli->put('/orders/'. $id. '/notes/' . (string)$listar1['body'][0]->results[0]->id, array('id'=>(string)$listar1['body'][0]->results[0]->id, 'note' => (string)$listar1['body'][0]->results[0]->note . '- tadá!!!! ' . date('Y-m-d h:i:s')), $params); print_r($alterar); //criar: quando criado um novo comentário este passa a ser o 0, e os demais são empurrados para baixo echo '<br><br>criar novo: <br>'; $criar = $meli->post('/orders/'. $id. '/notes/', array('note' => 'novo - ' . date('Y-m-d h:i:s')), $params); print_r($criar); //listar para verrificar o que foi feito(dã), mas aqui dá para ver o que aconteceu com o array. echo '<br><br>listar refeito: <br>'; $listar2 = $meli->get('/orders/'. $id. '/notes/', $params); print_r($listar2); //apagar: indicando qual o item a ser apagado ou serão todos apagados se deixar vazio echo '<br><br>apagar: <br>'; $apagar = $meli->delete('/orders/'. $id. '/notes/' . (string)$listar2['body'][0]->results[0]->id, $params); print_r($apagar); //relistar: deve retornar o registro do segundo passo, pois o registro inicial foi alterado echo '<br><br>listar final: <br>'; $listar3 = $meli->get('/orders/'. $id. '/notes/', $params); print_r($listar3); unset($retorno); unset($listar1); unset($alterar); unset($criar); unset($listar2); unset($apagar); unset($listar3); unset($params); unset($meli); Até mais Rodrigo
  10. Olá, sempre trabalhei com latin1 e iso-8859-1 (ou windows-1252), para manter a lusofonia em voga! Mas .... como o retorno da API MELI é em utf-8 e o iso-8859-1 encerrou o suporte foi necessário fazer a migração e mudar costumes (não conceitos!). Na alteração já passei a base de dados para utf-8. Começaram a aparecer os caracteres especiais e tentei resolver com htmlentities e htmlspecialchars do PHP, mas só se resolviam colocando 2 coisas nas páginas: ---------início-do-código------------------ <?php header('Content-Type: text/html; charset=utf-8',true); ?> <header> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </header> ----------fim-do-código------------- Resolvido! Não!!!!!! na base começaram a aparecer caracteres estranhos. (ai, ai) eu tinha ignorado, mas quando acesso a base vejo aquela sujeira e não gosto, fora que penso que gasta mais espaço de BD. Me irritei e encontrei um post no stackoverflow com a solução simples: mysql_set_charset('utf8', $conn); Tudo passou a funcionar bem. Muitos já deviam saber disso! Eu não sabia e não havia percebido isto em nenhuma das pesquisas anteriores(é óbvio). Sei que tem um post aqui perguntando por isso, mas não encontrei. Até mais Rodrigo
  11. hello TOM, the MeLi sell listings. If your listing end is better. Have relist automatic. I see you later Rodrigo
  12. Olá, estou refazendo meus gets e para redução das consultas peguei apenas as vendas que não tenho gravadas em BD e separei os código de envio(shipment_id). Percebi que não é possível fazer a consulta de múltiplos envios(shipments). Isto está certo? Achei que já havia visto isto. Até mais Rodrigo
  13. Quando será enviado um convite cortesia ao pessoal que participa e contribui ativamente do fórum? Preciso me agendar
  14. Olá, mais uma vez há alterações não reportadas que influenciam no funcionamento. Eu tinha uma consulta em PHP com a seguinte pesquisa: $frete = $meli -> get('/shipments', array('seller' => $usuarioid, 'access_token' => $access_token, 'id'=> $shippingid)); Usar o ID como variável não retorna mais nada, não vi isto ser reportado com antecedência, assim causou impacto em sistemas em produção. Agora só funciona assim: $frete = $meli -> get('/shipments/' . $shippingid, array('seller' => $usuarioid, 'access_token' => $access_token)); Para verificar o que ocorria eu abri manualmente os dados e tive uma surpresa com campos novos(desconhecidos por mim): "tracking_method": "eSedex" "cost_components": - { "special_discount": 0, }, este eu já tinha visto e é uma solicitação antiga que eu, mas também não vi reporte da adição, é a separação de logradouro, numeral e cidade. Que agora tem até o bairro. ótimo para gerar NF. "address_line": "rua xxxxxxxxx de jjjjjjjjj 624", "street_name": "rua xxxxxxxxx de jjjjjjjjj", "street_number": "624", "comment": "626", "city": - { "id": "BR-SP-44", "name": "São Paulo", }, "state": - { "id": "BR-SP", "name": "São Paulo", }, "country": - { "id": "BR", "name": "Brasil", }, "neighborhood": - { "id": null, "name": "Vila Monte Alegre", }, este eu não entendi: "municipality": - { "id": null, "name": null, }, Este é um tiro no pé: "estimated_delivery": Porque o usuário vê a data e acha que receberá e quer receber na data prevista, mas usa Boleto e agendou para o vencimento.... Tem melhoras, sem dúvida. Mas avisem, podemos usufruir melhor das ferramentas, isto é falta de documentar! Até mais Rodrigo
  15. Solari, but in purchase whit "to_be_agree" or when the buyer select 'combine with the seller' don't have shipping_id. Thanks
  16. Se você migrou de servidor deve trocar na aplicação do ML o endereço de retorno que tem permissão de usar a aplicação para autenticação. Lembrou disto?
  17. Solari, o que ele quer saber é a situação de um envio, combinado com o vendedor como é inserida a informação do tiopo de envio, rastreamento, data de entrega prevista e data de saída. Esta pergunta sempre é refeita no fórum. Está na hora de implementarem, pois isto indica que o Mercado está querendo. Até mais Rodrigo
  18. Hollas, quando você cria o anúncio define o valor do frete ou tem o MercadoEnvios, se não define nada o anúncio tem o "a combinar com o vendedor", o que você chama de "a convenir". Se habilitou o "retirar pessoalmente", então pode estar com esta condição. Eu não observei isto em produção, mas o caminho pode ser este. Até mais Rodrigo
  19. eu tenho a solução para o MercadoEnvios em PHP, mas acho que já conseguiu fazer
  20. Olá Juan, primeiro, se você desse um print_r em $result saberia que o resultado vem em array, não em JSON. O que é estranho, pois tudo deveria vir em JSON. Então veja a mudança: $result = $meli->get('/sites/MLA'); print_r($result); //para verificar o que retornou, depois você retira echo '<br><br>'; // só para separar $result = json_decode($result); $result = $result['body']; echo "<ul>"; var_dump($result); foreach($result as $r) { echo "<li>"; echo $r["id"]; echo "</li>"; } echo "</ul>"; $result = $result['body']->id; //exemplo se você quiser pegar apenas o id até mais
  21. Olá Rodrigo (xará), não liberam o número da PLP e da NF via API, não tem sentido, mas não fazem. Avisa se não resolveu o cálculo, eu tenho em PHP Até mais
  22. olá Ronaldo, não tem mais esta função e não há necessidade de fazer logout, só é possível acessar os dados se tiverem as chaves, sempre. Eu fiz uso de logout para testes, ( www.mercadolivre.com.br/jm/logout ), esta já funciona para expirar tudo. Mas não é boa ideia. (sou da época que ideia era acentuada, é difícil mudar.) Até mais Rodrigo
  23. filtra!!! Uma coisa é identificar para que serve e outra é se já foi tratada. Grave as infos como ID e resource, para não tratar 2 vezes a mesma coisa. Outra coisa para não ter chuva de notificações que não quer tratar é só configurar o que você deseja receber. Numa venda você é notificado da venda, do item e posteriormente do pagamento. Se o item encerra é só do item. Se o pagamento é executado após 5 dias é só do pagamento. Mas será que precisa de todos? Eu não preciso. Até mais Rodrigo
  24. opa... de novo não percebi que você já tinha tratado o expires_in, mas seu objeto $user está zerado. Qual a resposta deste $user?