• 0
PNhaia

invalid property type: [variations[0].attribute_combinations]

Question

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 by PNhaia

Share this post


Link to post
Share on other sites

7 answers to this question

Recommended Posts

  • 0
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
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
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
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
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!

Share this post


Link to post
Share on other sites
  • 0

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
);

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.