【问题标题】:Wrong Arguments in customer_address.update SOAP v1 CALLcustomer_address.update SOAP v1 CALL 中的参数错误
【发布时间】:2013-12-20 20:20:24
【问题描述】:

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

类型 - 数组 姓名-地址数据 说明 - 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 是正确使用的属性。我不知道我是否正确,也不知道文档是否过时或错误。我说的对吗?

【问题讨论】:

    标签: magento soap


    【解决方案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);
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-26
        相关资源
        最近更新 更多