Estou tentando criar um produto configurável chamado "Kudos configurável", com opções para o usuário selecionar entre verde pequeno, verde grande, laranja pequeno e laranja grande.
Cheguei ao estágio em que um produto configurável foi criado por meio da API usando o seguinte JSON em uma solicitação PUT para / rest / V1 / products / KudosConfig.
{
"product":{
"sku":"KudosConfig",
"name":"Kudos Configurable",
"price":30.00,
"status":4,
"type_id":"configurable",
"attribute_set_id":4,
"weight":1,
"extension_attributes":{
"stock_item":{
"qty":10,
"is_in_stock":true
}
}
}
}
Os produtos filhos foram criados usando a API usando o JSON a seguir para cada um dos 4 itens com atributos para tamanho e cor definidos pelo mesmo método.
{
"product":{
"sku":"KudosConfigGreenSmall ",
"name":"Kudos Configurable Green Small",
"price":30.00,
"status":0,
"type_id":"virtual",
"visibility":1,
"attribute_set_id":4,
"weight":1,
"extension_attributes":{
"stock_item":{
"qty":10,
"is_in_stock":true
}
},
"custom_attributes":[
{
"attribute_code":"kudos_colour",
"value":"328"
},
{
"attribute_code":"kudos_size",
"value":"330"
}
]
}
}
Isso está funcionando bem e os produtos são criados com os atributos definidos corretamente.
Eu pensava que o último estágio era usar o serviço configurableProductLinkManagementV1 para vincular os produtos filhos, mas usando uma solicitação POST para / rest / V1 / produtos configuráveis / KudosConfig / child com o seguinte JSON retorna erro de solicitação incorreta HTTP 400.
{
"childSku":"KudosConfigGreenSmall"
}
Estou pensando que pode haver algo mais que preciso fazer no produto pai, mas estou lutando para descobrir o que. Dentro do serviço catalogProductRepositoryV1, você pode adicionar uma matriz de configurable_product_options. Tentei brincar com isso, mas só tenho erros de solicitação incorretos.
Qualquer luz que alguém possa lançar sobre isso seria muito apreciada, já que passou muito tempo nisso.
EDITAR:
Agora você tentou adicionar as configurable_product_options à solicitação PUT do produto configurável, agora isso se parece com isso.
{
"product":{
"sku":"KudosConfig",
"name":"Kudos Configurable",
"price":30.00,
"status":4,
"type_id":"configurable",
"attribute_set_id":4,
"weight":1,
"extension_attributes":{
"stock_item":{
"qty":10,
"is_in_stock":true
},
"configurable_product_options":[
{
"attribute__id":"kudos_colour",
"label":"Colour",
"values":[
{
"value_index":340
},
{
"value_index":341
}
]
},
{
"attribute__id":"kudos_size",
"label":"Size",
"values":[
{
"value_index":343
},
{
"value_index":342
}
]
}
]
}
}
}
Quando tento isso, recebo uma resposta de 400 com a mensagem:
Ocorreu um erro ao salvar a opção.
Não é particularmente útil ...
Um pouco rápido no Google sugere que esse é o problema https://github.com/magento/magento2/issues/5580 .
O próximo passo é verificar se o cliente está satisfeito em fazer o hack no arquivo configurable.php.
EDIT: Agora tentei alterar o arquivo configurable.php, mas não parece ter feito a diferença, ainda recebendo o mesmo erro, de modo que perco novamente.
fonte