2

shoppingCartProductAdd SOAP API を使用して、カスタム オプション付きの商品をカートに追加しようとしています。

以下は、製品パラメーターに渡す配列です。ドロップダウンで選択された値 ID が 2 であるカスタム オプション ID 1 があります (ここで製品を表示できます) 。

array (size=1)
  0 => 
    array (size=3)
      'product_id' => int 25
      'qty' => int 1
      'options' => 
        array (size=1)
          1 => int 2

この商品はカートに追加されますが、カートの詳細/合計を取得すると、カスタム オプションが反映されません。sales_flat_quote_itemおよび表で作成されたエントリも手動で確認しましたsales_flat_quote_item_optionが、行にはカスタム オプションに関連するデータや価格がありません。

私は何を間違っていますか?


更新: 2013 年 12 月 11 日

カスタム オプションを「必須」に変更しました。上記の SOAP リクエストを実行すると、「製品に必要なオプションを指定してください」というメッセージが表示されます。エラー。配列内のオプション キーを無視しているようです。

4

3 に答える 3

2

多くのデバッグといじくり回した後、「オプション」をassociativeArrayとして渡す必要があることがわかりました。SOAP 用語では、次のように定義する必要があります。

array (size=1)
  0 => 
    array (size=3)
      'product_id' => int 25
      'qty' => int 1
      'options' => 
        array (size=1)
          0 => 
            array (size=2)
              'key' => int 1
              'value' => int 2

このフォーマットの詳細はこちら - https://stackoverflow.com/a/8963453/515268

この形式を使用して、SOAP 経由でカスタム オプションを使用して製品を正常に追加できます。カート情報と合計の価格も予想価格を反映しています。

于 2013-11-12T09:25:26.397 に答える
1

コアファイルを掘り下げた後、問題とそれにパッチを当てる簡単な方法を見つけました。

問題は、「cart_product.add」/「shoppingCartProductAdd」の SOAP API が、上記で行ったように、キー「options」を持つ製品オプションとスーパー属性の配列を受け入れることですが、追加する製品を準備するコード代わりに、キー「super_attribute」を使用してこの情報を探します。パッチを適用するには、「options」配列を cart_product.add API の「super_attribute」配列にコピーしただけです。

パッチファイルをここに置いてください。

于 2014-10-03T01:21:16.570 に答える