3

问题

我在使用 Magento SOAP api 创建订单时遇到问题。我已经准备好所有必需品(下面的代码片段),但每次我尝试创建订单时,它都会失败,状态码为 1008(请参阅Magento Docs)。

虽然没有错误消息,所以我只知道订单创建失败。

$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));

在 magento 日志中,此操作后会记录以下消息。


未定义的偏移量:0/var/www/cloud2u.nl/mccloud_n/app/code/core/Mage/Checkout/Model/Cart/Payment/Api.php

未定义变量:websiteId/var/www/cloud2u.nl/mccloud_n/app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php。
(此条目在此条目之后重复 3 次,每次相隔半秒)。


我在这里不知所措,几周前它处于工作状态,从那时起没有太大变化。

更多信息

$magi变量包含一个对象,该对象是使用 Magento Soap api 的抽象对象。它还捕获并记录所有错误,因此此代码中没有 try/catch 块。

  • Magento 版本:1.7.0.0
  • php版本5.4.6
  • 服务器操作系统:Ubuntu 11.10(开发服务器)
4

3 回答 3

1

未定义的偏移量:0/var/www/cloud2u.nl/mccloud_n/app/code/core/Mage/Checkout/Model/Cart/Payment/Api.php

该错误意味着有一个数组没有[ '0' ]的值

于 2012-08-14T08:45:55.867 回答
1

第一个错误:

未定义的偏移量:0/var/www/cloud2u.nl/mccloud_n/app/code/core/Mage/Checkout/Model/Cart/Payment/Api.php

是由于此方法的 Api.php 中的错误:

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

    return $data;
}

我能够摆脱这个问题更换

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

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

在测试期间,它以相同的方式工作并消除了错误。

于 2015-03-31T22:36:30.813 回答
0

我认为您的 $productEntity 是错误的。

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

它使购物车是空的。

^^

于 2012-08-05T11:39:27.363 回答