2012-07-03 84 views
3

我有一個客戶想要使用Magento的Web服務API創建和更新客戶。使用API​​,我們可以使用V1或V2 API輕鬆操縱系統定義的屬性 - 名字,姓氏等。我們很高興去那裏。Magento Enterprise 1.12 - 從V2 API訪問客戶自定義屬性

這就是它粘滯的地方 - 本網站使用Magento Enterprise 1.12,並且我們添加了一些自定義客戶屬性,用於將Magento客戶與其外部系統上的CRM數據關聯起來。使用V1 API,我可以完全訪問自定義屬性。但是,V2 API不會公開它們。由於調用者來自.NET,我相信他需要使用V2 API。

使用調試器跟蹤代碼,我發現V2代碼獲取所有屬性數據,然後在生成Web服務響應時刪除所有自定義數據。我嘗試將這些屬性添加到客戶(Mage/Customer/etc /)WSDL和WSI文件中,但這並沒有成功。

任何人都可以給我一個指針,我應該怎麼做才能公開客戶屬性?

格雷格

+0

在更深的挖掘,我現在看到所有你需要做的,添加API V2訪問自定義屬性是附加字段添加到客戶wsdl.xml&wsi.xml文件。新問題是我無法找出覆蓋核心wsdl的正確方法。我已經嘗試在app/code/local/customer/etc/wsdl.xml中放置修改後的副本,但這些更改似乎無法覆蓋app/code/core/customer/etc/wsdl.xml中的wsdl。有什麼想法嗎?我擔心在覈心中修改wsdl,但在這種情況下我可能必須這樣做。 – GregC

回答

2
  1. 創建一個新模塊
  2. Your_Module/etc/wsdl.xmlwsi.xml在同一節點中添加新的屬性,如Mage_Customer wsdl.xmlwsi.xml
  3. Magento的合併所有wsdl.xmlwsi.xml文件一起
+0

謝謝亞歷克斯 - 我做到了這一點,它運作得非常好。 – GregC

0

下面是我使用的wsdl.xml文件的示例d將customer_number添加到API。

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns:typens="urn:{{var wsdl.name}}" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" 
name="{{var wsdl.name}}" targetNamespace="urn:{{var wsdl.name}}"> 
    <types> 
     <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento"> 
      <complexType name="customerCustomerEntity"> 
      <all> 
       <element name="customer_number" type="xsd:string" minOccurs="0" /> 
      </all> 
      </complexType> 
     </schema> 
    </types> 
</definitions>