自动onepage结帐Magento - 运输方式

时间:2013-08-01 13:15:04

标签: php magento checkout

我正在研究运输方法的自动化,它似乎工作正常,但问题是:

每个第二个订单都有相同的错误“请指定送货方式”

可以是会话错误吗?应该通过get-post发送变量还是以其他方式从Magento检索变量?

这是一段代码:

<?php
$customer = Mage::getSingleton('customer/session')->getCustomer();


$customer->setWebsiteId(Mage::app()->getWebsite()->getId());

echo $customAddress = Mage::getModel('customer/address')->load($customer->getDefaultBilling());


$quote = Mage::getSingleton('checkout/session')->getQuote()->setBillingAddress(Mage::getSingleton('sales/quote_address')->importCustomerAddress($customAddress));

$cart = Mage::getSingleton('checkout/cart');

$storeId = Mage::app()->getStore()->getId();

$checkout = Mage::getSingleton('checkout/type_onepage');

$checkout->initCheckout();

$checkout->saveCheckoutMethod('register');

$checkout->saveShippingMethod('matrixrate_matrixrate_35');

$checkout->savePayment(array('method'=>'pay'));

Mage::getSingleton('checkout/type_onepage')->getQuote()->getShippingAddress()->setShippingMethod('matrixrate_matrixrate_35');


try {
    if ($checkout->saveOrder()) {echo "SUCCESSSSS!!!";}}
catch (Exception $ex) {
    echo $ex->getMessage();
}            

/* Clear the cart */
$cart->truncate();
$cart->save();
$cart->getItems()->clear()->save();
Mage::getSingleton('checkout/session')->clear();

它使用名为Pay的自定义支付网关,我使用矩阵扩展进行发货,虽然flatrate_flatrate上存在相同的错误,所以我不认为它是扩展问题。

感谢!!!

亚当

2 个答案:

答案 0 :(得分:2)

问题:订单拆分后仍然显示购物车商品

1.在发货方法步骤中保存报价集。

$quote->collectTotals()->save();

2.在订单拆分的最后一部分添加以下步骤。

$quote->setIsActive(false);
$quote->save();

答案 1 :(得分:0)

问题得到解决。

看起来会话/时间存在问题,服务器没有立即处理所有内容。

我必须添加购物车总页数:

$checkout->getQuote()->getShippingAddress()->setShippingMethod('matrixrate_matrixrate_35');
$checkout->saveShippingMethod('matrixrate_matrixrate_35');

为了确保设置运费,还要:

会话在手动成功页面清除。

总报价数量存在错误,所以我只是重新设计了脚本来正确计算它。

非常感谢您的帮助!!

亚当