我在使用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块。
答案 0 :(得分:1)
我认为你的$ productEntity是错误的。
$productEntity = array(
array("product_id" => 48,"qty" => 1);
);
它使购物车为空。
^^
答案 1 :(得分:1)
未定义的偏移量: 0 /无功/网络/ cloud2u.nl / mccloud_n /应用程序/代码/核心/法师/结帐/型号/购物车/付款/ Api.php
错误意味着有一个数组没有 ['0']
的值答案 2 :(得分: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])))
在测试期间,它以相同的方式工作并消除错误。