Cursos Magento

2 métodos de API para acelerar suas integrações

, ,

Atualizado em 16 de fevereiro de 2022

A API do Magento 1 é cheia de mistérios. Se você fez download dos exemplos de uso das APIs publicadas aqui no Magenteito, e é uma pessoa atenta, provavelmente notou que existem dois exemplos que não estão na documentação da Magento, mas existem na API Soap do Magento e permitem atualizar produtos em massa via API.

Vou abrir um parênteses aqui, e te contar um segredo (não espalha). Esta informação me foi útil tantas vezes pra mim, que tenho estes dois exemplos salvos no meu Evernote como “Métodos lindos da API Magento”. Por isso resolvi compartilhar hoje com você…

Atualização em massa de estoque via API Magento

O primeiro exemplo é o método catalogInventoryStockItemMultiUpdate. É isso mesmo. Você pode atualizar estoques em massa em uma única chamada.

<soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<soapenv:Header/>
	<soapenv:Body>
		<urn:catalogInventoryStockItemMultiUpdate soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
			<sessionId xsi:type="xsd:string">?</sessionId>
			<productIds soapenc:arrayType="xsd:string[]" xsi:type="urn:ArrayOfString"/>
			<productData soapenc:arrayType="urn:catalogInventoryStockItemUpdateEntity[]" xsi:type="urn:catalogInventoryStockItemUpdateEntityArray"/>
		</urn:catalogInventoryStockItemMultiUpdate>
	</soapenv:Body>
</soapenv:Envelope>

Você pode ver um exemplo de uso no arquivo soapcall_stock_multiupdate.php do conjunto de exemplos de uso da API.

Atualização de produtos em massa via API Magento

O outro exemplo é o catalogProductMultiUpdate. Ele permite atualizar vários produtos de uma vez só. Ou seja, não precisa ficar fazendo 100 chamadas pra atualizar 100 produtos diferentes. Você pode fazer uma chamada só.

O exemplo de uso deste método não está disponível no pacote de exemplos, mas ele existe! Acredite em mim! 🙂

<soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<soapenv:Header/>
	<soapenv:Body>
		<urn:catalogInventoryStockItemMultiUpdate soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
			<sessionId xsi:type="xsd:string">?</sessionId>
			<productIds soapenc:arrayType="xsd:string[]" xsi:type="urn:ArrayOfString"/>
			<productData soapenc:arrayType="urn:catalogInventoryStockItemUpdateEntity[]" xsi:type="urn:catalogInventoryStockItemUpdateEntityArray"/>
		</urn:catalogInventoryStockItemMultiUpdate>
	</soapenv:Body>
</soapenv:Envelope>

A sintaxe deste método é catalogProductMultiUpdate(SessionID, string productIds[], catalogProductCreateEntity[] products, string storeview, string identifier). Embora não seja possível especificar o código da loja para cada produto, apenas na chamada geral, isso não o torna menos útil, não é mesmo?

O primeiro parâmetro é o productIds, que deve conter um array com os identificadores que estamos enviando (o Magento usa product_id, mas você pode usar sku se preferir).

O segundo parâmetro (catalogProductCreateEntity) contém os dados dos produtos propriamente ditos, exatamente como você usa para criar um produto único (como mostrado no exemplo soapcall_product_create.php).

Nota do autor

Ainda que estes métodos possam reduzir em 500x o tempo de uma integração completa, use com moderação para evitar falhas. Já implementei lojas que conseguiam fazer até 1000 atualizações de estoque em uma única chamada, mas recomendo que você busque um valor menor.

Não é bacana?! Compartilha/comenta aí vai!

E se ainda assim não encontrou um método que lhe atenda, assista a seção 9 do curso criação de módulos Magento e crie a sua.

Artigos e tópicos relacionados:

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-1/acelerando-integracao-com-api-magento/"]