PNhaia 1 Posted October 31, 2018 (edited) Olá pessoal estou tentando cadastrar um produto com variações e estoque diferenciado segue um exemplo da matriz que está sendo enviada. array(11) { ["title"]=> string(30) "Produto de Teste Mercado Livre" ["category_id"]=> string(7) "MLB1371" ["price"]=> string(4) "6.00" ["currency_id"]=> string(3) "BRL" ["available_quantity"]=> string(1) "6" ["buying_mode"]=> string(10) "buy_it_now" ["listing_type_id"]=> string(6) "bronze" ["condition"]=> string(3) "new" ["description"]=> array(1) { ["plain_text"]=> string(74) "<p>Descrição do produto de Teste Mercado Livre<br></p>" } ["pictures"]=> array(1) { [0]=> array(1) { ["source"]=> string(97) "http://...../product-278990/11-1000x1000.png" } } ["variations"]=> array(3) { [0]=> array(4) { ["attribute_combinations"]=> array(3) { ["name"]=> string(7) "Tamanho" ["value_id"]=> string(6) "317548" ["value_name"]=> string(1) "P" } ["price"]=> string(4) "1.00" ["available_quantity"]=> string(4) "1.00" ["sold_quantity"]=> int(0) } [1]=> array(4) { ["attribute_combinations"]=> array(3) { ["name"]=> string(7) "Tamanho" ["value_id"]=> string(6) "317547" ["value_name"]=> string(1) "M" } ["price"]=> string(4) "1.00" ["available_quantity"]=> string(4) "2.00" ["sold_quantity"]=> int(0) } [2]=> array(4) { ["attribute_combinations"]=> array(3) { ["name"]=> string(7) "Tamanho" ["value_id"]=> string(6) "317546" ["value_name"]=> string(1) "G" } ["price"]=> string(4) "1.00" ["available_quantity"]=> string(4) "3.00" ["sold_quantity"]=> int(0) } } } A mensagem de retorno está com o seguinte erro: invalid property type: [variations[0].attribute_combinations] expected List but was JSONObject value: [name:Tamanho, value_name:P, value_id:317548] invalid property type: [variations[2].attribute_combinations] expected List but was JSONObject value: [name:Tamanho, value_name:G, value_id:317546] invalid property type: [variations[1].attribute_combinations] expected List but was JSONObject value: [name:Tamanho, value_name:M, value_id:317547] É possivel cadastrar estoque diferenciado por opção ? Edited October 31, 2018 by PNhaia Share this post Link to post Share on other sites
0 Diogenes Lima 62 Posted November 7, 2018 On 10/31/2018 at 1:45 PM, PNhaia said: Olá mldev eu tive o cuidado em analisar a mensagem tanto é que post eu coloquei o array para analise para certificar que não está sendo enviado objeto. Chegou a ver o array ? A forma que você postou seu objeto aqui é horrível para entender a estrutura. Às vezes não basta dar um dump da variável e postar porque continua ruim. Da próxima vez tente formatar melhor os dados antes de postar. Sua estrutura está errada, pois "attribute_combinations" precisa ter uma estrutura definida. Uma "combination" é um conjunto de dados e cada conjunto possui um conjunto de atributos, portanto, traduzindo em PHPês, significa que deve ser um array dentro de outro array, mesmo que este primeiro array possua somente um objeto (tamanho, no seu caso). Algo assim: $combination = [ "id" => "SIZE", "name" => "Tamanho", "value_id" => "317548", "value_name" => "P" ]; $attribute_combinations[] = $combination; //caso tivesse outras combinações, como COR, você repete os passos acima, criando a combinação e adicionando ao array attribute_combinations. O erro no seu código é que em attribute_combinations você colocou os dados da combinação direto e não dentro de outro array, por isso o ML está retornando este erro que citou. Outra coisa, você precisa verificar a categoria para ver se as variações obrigatórias foram informadas, pq no seu código você não informou o ID da combinação (SIZE, no meu código), mas se for obrigatório, vai dar erro. Além disso, se realmente não for usar o que a categoria informa como variações, náo deve usar o value_id nas combinações, pois eles só s]ao válidos quando usa os dados da combinação conforme a categoria estabelecer. Share this post Link to post Share on other sites
0 mldev 339 Posted October 31, 2018 39 minutes ago, PNhaia said: ... A mensagem de retorno está com o seguinte erro: invalid property type: [variations[0].attribute_combinations] expected List but was JSONObject value: [name:Tamanho, value_name:P, value_id:317548] invalid property type: [variations[2].attribute_combinations] expected List but was JSONObject value: [name:Tamanho, value_name:G, value_id:317546] invalid property type: [variations[1].attribute_combinations] expected List but was JSONObject value: [name:Tamanho, value_name:M, value_id:317547] É possivel cadastrar estoque diferenciado por opção ? como sempre digo a todos: prestem atenção as mensagens de erro!!! elas trazem 99% das respostas o erro diz que se espera uma List (Array) e o que está sendo enviado é um objeto Share this post Link to post Share on other sites
0 PNhaia 1 Posted October 31, 2018 1 hour ago, mldev said: como sempre digo a todos: prestem atenção as mensagens de erro!!! elas trazem 99% das respostas o erro diz que se espera uma List (Array) e o que está sendo enviado é um objeto Olá mldev eu tive o cuidado em analisar a mensagem tanto é que post eu coloquei o array para analise para certificar que não está sendo enviado objeto. Chegou a ver o array ? Share this post Link to post Share on other sites
0 gbandoni 40 Posted October 31, 2018 A mensagem é obvia você está informando um jsonobject no lugar de um array. Você sempre pode olhar um produto com variações e ver como é declarado nele https://api.mercadolibre.com/items/MLB833452456?include_attributes=all Compare os valores e veja o que esta fazendo de errado Share this post Link to post Share on other sites
0 PNhaia 1 Posted November 7, 2018 3 minutes ago, Diogenes Lima said: A forma que você postou seu objeto aqui é horrível para entender a estrutura. Às vezes não basta dar um dump da variável e postar porque continua ruim. Da próxima vez tente formatar melhor os dados antes de postar. Sua estrutura está errada, pois "attribute_combinations" precisa ter uma estrutura definida. Uma "combination" é um conjunto de dados e cada conjunto possui um conjunto de atributos, portanto, traduzindo em PHPês, significa que deve ser um array dentro de outro array, mesmo que este primeiro array possua somente um objeto (tamanho, no seu caso). Algo assim: $combination = [ "id" => "SIZE", "name" => "Tamanho", "value_id" => "317548", "value_name" => "P" ]; $attribute_combinations[] = $combination; //caso tivesse outras combinações, como COR, você repete os passos acima, criando a combinação e adicionando ao array attribute_combinations. O erro no seu código é que em attribute_combinations você colocou os dados da combinação direto e não dentro de outro array, por isso o ML está retornando este erro que citou. Outra coisa, você precisa verificar a categoria para ver se as variações obrigatórias foram informadas, pq no seu código você não informou o ID da combinação (SIZE, no meu código), mas se for obrigatório, vai dar erro. Além disso, se realmente não for usar o que a categoria informa como variações, náo deve usar o value_id nas combinações, pois eles só s]ao válidos quando usa os dados da combinação conforme a categoria estabelecer. Valeu Diogenes mais já consegui resolver faz um tempinho de qualquer forma valeu. Share this post Link to post Share on other sites
0 mldev 339 Posted November 7, 2018 5 hours ago, PNhaia said: Valeu Diogenes mais já consegui resolver faz um tempinho de qualquer forma valeu. sempre que conseguir resolver um problema, poste aqui a solução e encerre o tópico, seguindo assim a boa prática para usuários de fórum também aproveito para convidar que PARTICIPE! pois o que mais vemos aqui são usuários que entram somente para perguntar quando tem problemas, mas nunca se dispõe depois a ajudar os demais: lembre-se que um dia você precisou =] abraços! 1 Diogenes Lima reacted to this Share this post Link to post Share on other sites
0 PNhaia 1 Posted November 8, 2018 Pessoal não encontrei solução nas respostas acima, tive um pouco de dificuldade para entender a API mais vou postar parte do código para o pessoal do fórum para que fique mais claro de como resolver o problema. Espero que ajude a galera ? $pictures = array(); $pictures_id = array(); array_push($pictures, array('source' => 'http://meu-site.com/image.jpg' )); array_push($pictures_id, 'http://meu-site.com/image.jpg' ); $variations = array(); //na variavel abaixo vc pode fazer o push de mais opcoes $variations[] = [ 'attribute_combinations' => [ array('name'=> 'TAMANHO', 'value_id' => 'ID', 'value_name' => 'GG') ], 'price' => 100.00, 'available_quantity' => 1, 'sold_quantity' => 0, 'picture_ids' => $pictures_id ]; $item = array( "title" => 'PRODUTO DE TESTES'', "category_id" => 'MLB3936'', "price" => 100.00, "currency_id" => "BRL", "available_quantity" => 1, "buying_mode" => "buy_it_now", "listing_type_id" => "bronze", "condition" => "new", "shipping" => array( "mode" => "me2", "methods" => [], "tags" => [], "dimensions" => '10x10x10', "local_pick_up" => false, "free_shipping" => false, "logistic_type" => "cross_docking", "store_pick_up" => false ), "description" => array('plain_text' => 'PRODUTO DE TESTES'), "pictures" => $pictures, "variations" => $variations ); 1 mldev reacted to this Share this post Link to post Share on other sites
Olá pessoal estou tentando cadastrar um produto com variações e estoque diferenciado segue um exemplo da matriz que está sendo enviada.
A mensagem de retorno está com o seguinte erro:
invalid property type: [variations[0].attribute_combinations] expected List but was JSONObject value: [name:Tamanho, value_name:P, value_id:317548]
invalid property type: [variations[2].attribute_combinations] expected List but was JSONObject value: [name:Tamanho, value_name:G, value_id:317546]
invalid property type: [variations[1].attribute_combinations] expected List but was JSONObject value: [name:Tamanho, value_name:M, value_id:317547]
É possivel cadastrar estoque diferenciado por opção ?
Share this post
Link to post
Share on other sites