customer_address.update SOAP v1 CALL中的参数错误

时间:2013-12-20 20:20:25

标签: magento soap

我有疑问,我没有在互联网上找到有关它的信息。在customer_address.update SOAP V1调用中,soap api文档(http://www.magentocommerce.com/api/soap/customer/customerAddress/customer_address.update.html)声明其中一个参数是:

类型 - 数组 name - addressdata 描述 - customerAddressEntityCreate数组。

该示例使用带有addressId和addressData:

的数组
$result = $client->call( 
$session, 
‘customer_address.update’, 
array(’addressId’ => 8, ‘addressdata’ => array(’firstname’ => ‘John’, ‘lastname’ => ‘Doe’, ‘street’ => array(’Street line 1’, ‘Streer line 2’), ‘city’ => ‘Weaverville’, ‘country_id’ => ‘US’, ‘region’ => ‘Texas’, ‘region_id’ => 3, ‘postcode’ => ‘96093’, ‘telephone’ => ‘530-623-2513’, ‘is_default_billing’ => TRUE, ‘is_default_shipping’ => FALSE))); 
var_dump ($result);

但是,在我的magento实例中(我正在使用社区版v.1.7.0.2)我得到101号客户不存在肥皂故障。

编辑: 我将属性从addressId更改为customerId并且工作正常。我相信customerId是正确的属性。我不知道我是对的,也不知道文件是否过时或错误。我是对的吗?

2 个答案:

答案 0 :(得分:1)

重新

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

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

$result = $client->call(
$session,
'customer_address.update',
array('addressId' => 8, 'addressdata' => array('firstname' => 'John', 'lastname' => 'Doe', 'street' => array('Street line 1', 'Streer line 2'), 'city' => 'Weaverville', 'country_id' => 'US', 'region' => 'Texas', 'region_id' => 3, 'postcode' => '96093', 'telephone' => '530-623-2513', 'is_default_billing' => TRUE, 'is_default_shipping' => FALSE)));
var_dump ($result);

有送货地址和帐单邮寄地址ID以及将它们或其他设置为默认地址的功能。 AddressId指定要更新的内容。

请参阅:http://www.magentocommerce.com/api/soap/customer/customerAddress/customer_address.list.html 并先对当前客户做一个清单。 如果他们没有任何地址,请首先创建必要的地址,然后再按其ID定位并更新。 http://www.magentocommerce.com/api/soap/customer/customerAddress/customer_address.create.html

$result = $client->call($session, 'customer_address.list', '2');

$result = $client->call(
$session,
'customer_address.create',
array('customerId' => 2, 'addressdata' => array('firstname' => 'John', 'lastname' => 'Doe', 'street' => array('Street line 1', 'Streer line 2'), 'city' => 'Weaverville', 'country_id' => 'US', 'region' => 'Texas', 'region_id' => 3, 'postcode' => '96093', 'telephone' => '530-623-2513', 'is_default_billing' => FALSE, 'is_default_shipping' => FALSE)));
var_dump ($result);

答案 1 :(得分:1)

感谢您回答JoshBelke。 customer_address.update确实需要你指出的addressId。我想在远程magento实例中复制地址。我发现当你使用本地实例的信息在远程magento实例中创建一个地址时,它可能会创建一个与本地addressId不同的addressId,并且为了更新远程地址,你需要知道远程地址ID,我没有存放在任何地方。为了解决这个问题,我们提出了一个复杂的解决方案,我们在远程地址中创建了一个字段,其id为相应的本地地址,因此我们搜索地址与地址相对应的地址,并更新该地址。