MagentoのSOAP v2 API(Magento Enterprise、ver 1.12.0.2)を使用して製品とその属性を操作しようとしていますが、私たちのストアには多くのカスタム属性があります。既定の名前、説明、価格などを除いて、SOAP v2経由でアクセスできないという追加の属性があります。私はcatalogProductUpdateメソッドを使用して属性(devdocs page here)を編集しようとしましたが、カスタム属性を編集できるように「additional_attributes」フィールドを正しく設定する方法を理解できませんでした。私はそれが正しい形式ではないというエラーを取り返しています。たとえば、音楽プロダクトがあるため、「アーティスト」フィールドの値を設定します。Powershell 3.0のSOAP構文
MagentoではWS-Iに準拠していません。
私はPowershell 3.0でnew-webserviceproxyを使用していますので、.NET Frameworkを使用していると思います。だから私の試みは、この
$proxy = new-webserviceproxy -uri $soapuri
$sessionid = $proxy.login($username,$password)
$array1 = @{"key"="artist";"value"="4845"} #I also tried setting the value to the name instead of the ID number (ie. "key" = "artist";"value"="Billy Joel") but that returned the same error.
$array2 = @{"single_data" = $array1}
$proxy.catalogproductupdate($sessionid, <a sku number>, "admin", @{"additional_attributes" = $array2}, "sku")
のようになりますしかし、何を返すと、属性の更新は「system.collections.hashtable」を期待していなかったというエラーメッセージです。私は、単一データ/マルチデータのネストに関して、フォーマットが正しくないと思う。私が理解しているところでは、additional_attributesパラメータの配列にはその中の "single_data"パラメータが必要であり、 "single_data"内部は実際の属性リストと値でなければなりません。だから、それは3-teirハッシュテーブルのようなものです。
他の非カスタム属性を編集するためにハッシュテーブルの書式設定を使用できます。そのため、問題はハッシュテーブル自体ではありません。それはちょうど "additional_attributes"フィールドです。
ありがとうございます。