Magento SOAP no puede crear orden

El problema

Tengo problemas para crear un pedido con la API SOAP de Magento. Tengo todas las necesidades básicas en su lugar (fragmento de código a continuación), pero cada vez que intento crear el pedido, falla con el código de estado 1008 (consulte Documentos de Magento).

Sin embargo, no hay ningún mensaje de falla, así que solo sé que la creación del pedido falló.

$cart_id                 = $magi->execute("cart.create");
$customerEntity          = $magi->execute("customer.info",5);
$customerEntity["mode"] = "customer";

$customerAddressEntity         = $magi->execute("customer_address.info",$customerEntity["default_billing"]);
$customerAddressEntity["mode"] = "billing";

$magi->execute("cart_customer.set", array($cart_id,$customerEntity));
$magi->execute("cart_customer.addresses", array($cart_id,array($customerAddressEntity)));

$productEntity = array("product_id" => 48,"qty" => 1);

$magi->execute("cart_product.add",array($cart_id,array($productEntity)));
$magi->execute("cart_payment.method",array($cart_id,array("method" => "banktransfer")));

$orderId = $magi->execute("cart.order", array($cart_id));

En el registro de magento se registran los siguientes mensajes después de esta operación.


Desplazamiento indefinido: 0/var/www/cloud2u.nl/mccloud_n/app/code/core/Mage/Checkout/Model/Cart/Payment/Api.php

Variable no definida: websiteId/var/www/cloud2u.nl/mccloud_n/app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php.
(esta entrada se repite 3 veces después de esta, cada una con medio segundo de diferencia).


Estoy perdido aquí, estaba en condiciones de trabajo hace un par de semanas y no ha cambiado mucho desde entonces.

Más información

La $magos La variable contiene un objeto que es una abstracción para usar la API de Magento Soap. También detecta y registra todos los errores, por lo tanto, no hay bloques de prueba/captura en este código.

  • Versión de Magento: 1.7.0.0
  • PHP versión 5.4.6
  • Sistema operativo del servidor: Ubuntu 11.10 (servidor de desarrollo)

preguntado el 12 de junio de 12 a las 13:06

3 Respuestas

Creo que su $productEntity está mal.

$productEntity = array(
     array("product_id" => 48,"qty" => 1);
);

y hace que el carrito esté vacío.

^^

Respondido 05 ago 12, 12:08

Desplazamiento indefinido: 0/var/www/cloud2u.nl/mccloud_n/app/code/core/Mage/Checkout/Model/Cart/Payment/Api.php

el error significa que hay una matriz que no tiene valor para [ '0' ]

Respondido 14 ago 12, 09:08

Este es un error en Magento, pero no la causa del problema. Esta advertencia se puede eliminar agregando un valor a [0] en la matriz del método de pago. - i.amniels

El primer error:

Desplazamiento indefinido: 0/var/www/cloud2u.nl/mccloud_n/app/code/core/Mage/Checkout/Model/Cart/Payment/Api.php

Se debe a un error en Api.php en este método:

protected function _preparePaymentData($data)
{
    if (!(is_array($data) && is_null($data[0]))) {
        return array();
    }

    return $data;
}

Pude deshacerme de este problema reemplazando

if (!(is_array($data) && is_null($data[0])))

con

if (!(is_array($data) && !isset($data[0])))

Durante la prueba, funciona de la misma manera y elimina el error.

respondido 31 mar '15, 23:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.