tutorial services example php magento soap magento-1.7

php - services - Configuración de opciones personalizadas al agregar un producto al carro mediante SOAP en Magento



magento web service tutorial (3)

Después de buscar en los archivos centrales, encontré el problema y una forma sencilla de parcharlo.

El problema es que la API de SOAP para "cart_product.add" / "shoppingCartProductAdd" acepta una variedad de opciones de productos y super atributos con las "opciones" clave, como ya hiciste anteriormente, pero el código que prepara el producto para ser agregado al carro busca esta información usando la clave "super_attribute", en su lugar. Para parchar, simplemente copié la matriz de "opciones" a una matriz "super_attribute" en la API cart_product.add.

Puse el archivo de parche aquí que puede ayudar: https://github.com/mezzi/magento-api-patches/blob/master/0001-fix-soap-api-configurable-product-options.patch

Intento utilizar la API SOAP shoppingCartProductAdd para agregar un producto con Opciones personalizadas al carrito.

A continuación se muestra la matriz que estoy aprobando para el parámetro de productos. Tengo una ID de opción personalizada 1 para la cual el ID de valor seleccionado en el menú desplegable es 2. (puede ver el producto aquí )

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

Este producto se agrega al carrito, pero cuando recupero los detalles / totales del carrito, no refleja las opciones personalizadas. También he verificado manualmente la entrada creada en las sales_flat_quote_item y sales_flat_quote_item_option , pero las filas no tienen datos ni precios relacionados con la opción personalizada.

¿Qué estoy haciendo mal?

Actualización: 12/11/2013

Cambié la opción personalizada para que sea "requerida". Ahora cuando pruebo la solicitud SOAP anterior, me da una "Por favor, especifique la (s) opción (es) requerida (s) del producto". error. Parece que solo está ignorando mi clave de opciones en la matriz.


Después de mucha depuración y manipulación, resulta que las ''opciones'' deben pasarse como un Array asociativo que en términos SOAP debe definirse de la siguiente manera:

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

Más sobre este formato aquí - https://.com/a/8963453/515268

Usando este formato, puedo agregar Productos con Opciones Personalizadas a través de SOAP. El precio en la información del carrito y los totales también refleja el precio esperado.


La documentación de la API está incompleta. http://devdocs.magento.com/guides/m1x/api/soap/checkout/cartProduct/cart_product.add.html

Necesita ''super_attribute'' en lugar de ''options'' cuando agrega productos configurables.

Este es un volcado del objeto quote al agregar productos a través del carrito.

Mage_Sales_Model_Quote::addProduct->request=Varien_Object Object ( [_data:protected] => Array ( [product_id] => 2002 [qty] => 1 [super_attribute] => Array ( [0] => Array ( [207] => 1002 ) ) )

Así es como debería estructurarse su matriz.

$arrProducts = array( array( "product_id" => "1", "qty" => 2 "super_attribute" => array( optionId_1 => optionValue_1 ) ) ); $resultCartProductAdd = $proxy->call( $sessionId, "cart_product.add", array( $quoteId, $arrProducts ) );

Tenga en cuenta que optionId_1 = attribute_id y optionValue_1 = el valor de la opción de atributo.