以编程方式创建订单

时间:2013-11-14 11:44:45

标签: magento

我尝试在代码中创建订单,但有时代码有效,但有时会出现异常“请求的付款方式不可用”。 (第一个浏览器请求没问题,但第二个浏览器请求出错等等。)。

我的代码是:

if (Mage::getSingleton('customer/session')->isLoggedIn()) {
    $customer = Mage::getSingleton('customer/session')->getCustomer();
    $customer->setWebsiteId(Mage::app()->getWebsite()->getId());
} else {
    $customer = Mage::getModel('customer/customer');
    $email = 'test@example.com';
    $customer->setWebsiteId(Mage::app()->getWebsite()->getId());
    $customer->setStoreId(Mage::app()->getStore()->getId());
    $customer->loadByEmail($email);
    Mage::getSingleton('customer/session')->loginById($customer->getId());
}

$customAddress = Mage::getModel('customer/address')
        ->setCustomerId($customer->getId())
        ->getCustomer();

$customAddressId = Mage::getSingleton('customer/session')->getCustomer()->getDefaultBilling();
if ($customAddressId) {
    $customAddress = Mage::getModel('customer/address')->load($customAddressId);
}

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

$product = Mage::getModel('catalog/product')
        ->setStoreId(Mage::app()->getStore()->getId())
        ->load(2);

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

try {
    $cart->addProduct($product, array('qty' => 2));
    $cart->save();

    $message = $this->__('%s was successfully added to your shopping cart.', $product->getName());
    Mage::getSingleton('checkout/session')->addSuccess($message);
} catch (Exception $ex) {
    echo $ex->getMessage();
}

$storeId = Mage::app()->getStore()->getId();
$checkout = Mage::getSingleton('checkout/type_onepage');
$checkout->initCheckout();
$checkout->saveCheckoutMethod('register');
$checkout->saveShippingMethod('flatrate_flatrate');

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

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

$cart->truncate();
$cart->save();
$cart->getItems()->clear()->save();
Mage::getSingleton('customer/session')->logout();

1 个答案:

答案 0 :(得分:0)

我在我的本地服务器上检查了你的代码,第一次工作正常,但第二次显示错误,如The requested Shipping Method is not available,就像你上面提到的那样。但是,在我启用该运输方法后,它运行正常,因此请尝试启用您在代码中使用的运费和付款方式。