• 0
Sign in to follow this  
ronaldoguedess

Como solicitar novo Json do carrinho de compras usando o x-format-new:true no PHP

Question

Ola tudo bem? uso PHP na construção de minha aplicação, e gostaria de verificar o novo modelo de Json para carrinho de compras..
porem não sei onde coloco esse x-format-new:true

Como e onde eu coloco esse x-format-new:true na requisição abaixo que lista todas as vendas pagas.

   $questions = $meli->get('/orders/search?seller=xxxxx&access_token=xxxxxxxx&order.status=paid');

Share this post


Link to post
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Olá Ronaldo,

isto vai no header da solicitação.
Pelo que vi você usa o SDK, pois usa a função get ($xxx->get('')). Para isto você deveria criar uma requisição cURL à parte, pois no SDK não tem a possibilidade de manipular os headers em tempo de execução.

Também uso o SDK e nunca tive problemas com o carrinho no uso em linha, só em testes, então não me sito seguro de responder.

Mas pelo que entendi do lançamento do carrinho é que havia prazo de retrocompatibilidade, ele já se expirou e não precisa mais de header especial

Share this post


Link to post
Share on other sites
  • 0

Obrigado pela resposta rodrigo. entendi. pensei que existia alguma forma nativa pra se usar o HEADER da hora de chamar a requisição da forma que faço.

Parece que ainda não estamos recebendo o novo Json. acabei de fazer uma solicitação com o comando que postei acima... e esta me retornando o JSON antigo.

image.png.d42e1c54004f11120380181160859f40.png

 

Analisando a documentação la esta escrito que q novo Json não retorna mais os dados de Shipping, apenas o ID. veja o JSON ANTIGO E o NOVO. to postando aqui mas você deve saber. hahahha

Screenshot_1.png.70b427305c656d73247a08de47088067.png

Screenshot_2.png.a31cf1ff2f04298d63c69456232371ad.png

 

Se eu criar um CURL pra isso vai ser pior no meu caso, vou esperar mudar o json de vez, e pelo que nos informaram já deveria ter mudado.

Share this post


Link to post
Share on other sites
  • 0

Olá!

Tentei fazer esse procedimento via Postman, mas ainda aparece o padrão antigo. Pesquisei bastante antes de pedir ajuda, mas não achei o local onde eu precise atualizar para o novo formato.

image.thumb.png.a4a60679fca67b0eefd233d55dcfa2af.png

Todos os pedidos aparecem, menos os que são de carrinho de compra.

Agradeço a ajuda.

 

 

Share this post


Link to post
Share on other sites
  • 0

Obrigado pelo retorno.

Pois é, está estranho isso aqui. Não tem o parâmetro pack_id.

image.png.4fa15b1cdd9c98d9e6601a594e6a8dc0.png

Pior é que tenho vários pedidos no formato de carrinho. Os pedidos fora do carrinho, importa normalmente. Os que são de carrinho, não busca.

Por isso pensei que tivesse que liberar isso em algum lugar.

 

 

 

Share this post


Link to post
Share on other sites
  • 0

tira o format-new, faz a pesquisa comum.
Veja se tem o pack_id. ou a venda que tem o pack_id

Tendo o pack_id na venda você faz uma consulta em /shipments/{shipment_id}/items . O resultado disto você usa para substituir o order_items da order.

Share this post


Link to post
Share on other sites
  • 0

Certo, tentei pela pesquisa comum e também não vem os pedidos.

Eu não sei se isso interfere, mas estamos substituindo um integrador existente, da EZ Commerce. Ele também faz a integração dos pedidos, mas são sistemas diferentes (com token e ID separados). Não deveria interferir em nada, ou estou enganado?

 

Share this post


Link to post
Share on other sites
  • 0

não interfere.
Eu trouxe pelo menos 3 pedidos de uma só conta hoje com mais de 1 item.

a pesquisa é no endpoint: /orders/search/recent
com os filtros: order.status => paid, shipping.substatus => ready_to_print,  sort => date_desc

eu uso o SDK PHP, e não testei com curl puro.

Share this post


Link to post
Share on other sites
  • 0

O SDK nada mais é que uma classe de código. Não precisa usar ela crua e pode adaptá-la, caso necessário. Eu adaptei aqui.

Considerando a versão mais atual do SDK, note que ao chamar o "GET" do SDK ele faz uma chamada para o "EXECUTE", então tem basicamente 3 formas que você pode usar neste caso. Uma é chamar o método "EXECUTE" e não o "GET", passando os parâmetros necessários (cuidado porque a ordem dos parâmetros muda com relação ao GET):

function execute($path, $opts = array(), $params = array(), $assoc = false)

 

O parâmetro "opts", você pode passar desta forma:

$opts = [CURLOPT_HTTPHEADER => ['x-format-new: true']];

Fazendo isso, você não altera o SDK, só altera o método chamado no seu código, mas por uma questão estética, pode ficar mais difícil lembrar pq fez esta chamada. Uma outra opção é ter uma classe sua que encapsule as chamadas ao SDK e nesta classe você pode ter um método GET que possa receber o OPTS como parâmetro e repasse para o EXECUTE. Aí você manda ou não o OPTS conforme a sua necessidade.

A terceira opção é alterar o GET direto no SDK para receber o OPTS e repassá-lo ao EXECUTE. Só precisa ter o cuidado de refazer esta alteração caso algum dia seja liberada alguma nova versão do SDK e você o atualize. Aí ao chamar o GET você monta o OPTS conforme acima e repassa ele somente quando necessário.

Algo assim:

 
public function get($path, $params = null, $assoc = false, $opts = null) {
	$exec = $this->execute($path, $opts, $params, $assoc);

	return $exec;
}

 

Share this post


Link to post
Share on other sites
  • 0

Poxa, agradeço mesmo a ajuda de vocês! 

Abri um chamado no suporte do ML. Parece que o problema é no cadastro mesmo, tem alguma coisa bloqueando os pedidos novos, que não se sabe o que é... 

Postarei aqui a resposta deles, se eles resolverem... caso contrário, será necessário abrir um novo cadastro...

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
Sign in to follow this