如何将SOAP v2 multiCall转换为Magento API?

时间:2015-12-24 18:18:21

标签: php magento soap

$client = new SoapClient($host . '/api/v2_soap/?wsdl');
$session = $client->login($apiUser, $apiKey);

$result = $client->catalogInventoryStockItemMultiUpdate($session, 'sku_id1',
          array('qty' => 1), null, 'sku');
$result = $client->catalogInventoryStockItemMultiUpdate($session, 'sku_id1',
          array('qty' =>2), null, 'sku');

如何使用函数catalogInventoryStockItemMultiUpdate()或其他决策来调用多个函数?

仅适用于肥皂v1而不适用于肥皂v2。

1 个答案:

答案 0 :(得分:3)

为那些从Google收到此邮件的人回答此问题。 v2 Magento Api没有多功能。 v1 API可以。

以下是API v1文档中的代码段,演示了如何一次拨打多个电话:

$client = new SoapClient('http://magentohost/soap/api/?wsdl');

// If somestuff requires api authentification,
// then get a session token
$session = $client->login('apiUser', 'apiKey');

$result = $client->call($session, 'somestuff.method');
$result = $client->call($session, 'somestuff.method', 'arg1');
$result = $client->call($session, 'somestuff.method', array('arg1', 'arg2', 'arg3'));
$result = $client->multiCall($session, array(
     array('somestuff.method'),
     array('somestuff.method', 'arg1'),
     array('somestuff.method', array('arg1', 'arg2'))
));


// If you don't need the session anymore
$client->endSession($session);

仍然必须创建请求并逐个排队,但至少可以节省一个接一个地发送请求所需的时间。

在我拥有的工具中,我使用v1和v2 api的组合进行批量更新和选择性更新。 v1 API可能会执行您需要的所有操作,而不是WSI兼容。