magento以编程方式从php代码执行命令

时间:2015-10-04 04:34:12

标签: magento

我编写的代码执行以下操作: 1:如果客户不在,则创建客户 - >这部分工作正常 2:登录客户,将产品添加到购物车,并结帐 - >这不起作用

以下代码似乎一切正常。我不知道为什么没有订购

$customer = Mage::getModel('customer/customer');
//$customer  = new Mage_Customer_Model_Customer();


$password = $_REQUEST['comment'];
$email = $_REQUEST['email'];
$fname = $_REQUEST['name'];
$lname = $_REQUEST['Lastname'];
$streetadd = $_REQUEST['alamat'];
$city = $_REQUEST['kota'];
$telnum = $_REQUEST['phone'];



 /* add customer start here */
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($email);
//Zend_Debug::dump($customer->debug()); exit;

if(!$customer->getId()) {
    $customer->setEmail($email);
    $customer->setFirstname($fname);
    $customer->setLastname($lname);
    $customer->setPassword($password);
}
try {
    $customer->save();
    $customer->setConfirmation(null);
    $customer->save();
    //Make a "login" of new customer
    Mage::getSingleton('customer/session')->loginById($customer->getId());
}
catch (Exception $ex) {
    //Zend_Debug::dump($ex->getMessage());
}   


/* add shipping details start here */

$_custom_address = array (
    'firstname' => $fname,
    'lastname' => $lname,
    'street' => array (
        '0' => $streetadd,
    ),
    'city' => $city ,
    'region_id' => '',
    'region' => 'region',
    'postcode' => '111111',
    'country_id' => 'IN', /* Croatia */
    'telephone' => $telnum,
);

//$customAddress = Mage::getModel('customer/address')
$customAddress = new Mage_Customer_Model_Address();
$customAddress->setData($_custom_address)
            ->setCustomerId($customer->getId())
            ->setIsDefaultBilling('1')
            ->setIsDefaultShipping('1')
            ->setSaveInAddressBook('1');

try {
    $customAddress->save();
}
catch (Exception $ex) {
    Zend_Debug::dump($ex->getMessage());
}

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



/* add order starts here */


/* If we wish to load some product by some attribute value diferent then id */
/*
$product = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToFilter('sku', 'some-sku-value')
    ->addAttributeToSelect('*')
    ->getFirstItem();*/

$product->load('256');
$cart = Mage::getSingleton('checkout/cart');
/* We want to add only the product/products for this user and do so programmatically, so lets clear cart before we start adding the products into it */
$cart->truncate();
$cart->save();
$cart->getItems()->clear()->save();         
try {
    /* Add product with custom oprion? =>  some-custom-option-id-here: value to be read from database or assigned manually, hardcoded? Just example*/
    //$cart->addProduct($product, array('options'=> array('some-custom-option-id-here' => 'Some value goes here');
    $cart->addProduct($product,1);
    $cart->save();              
}
catch (Exception $ex) {
    echo $ex->getMessage();
}
unset($product);




// proceed order
$storeId = Mage::app()->getStore()->getId();
$checkout = Mage::getSingleton('checkout/type_onepage');
$checkout->initCheckout();
$checkout->saveCheckoutMethod('register');
$checkout->saveShippingMethod('flatrate_flatrate');
$checkout->savePayment(array('method'=>'checkmo'));
try {
    $checkout->saveOrder();
}
catch (Exception $ex) {
    echo $ex->getMessage();
}           
$cart->truncate();
$cart->save();
$cart->getItems()->clear()->save();     
Mage::getSingleton('customer/session')->logout();

1 个答案:

答案 0 :(得分:1)

在这里,您可以找到如何通过代码在magento中创建订单的解决方案。

  

http://inchoo.net/magento/programmatically-create-order-in-magento/

我已经实现了相同的功能并且它为我工作。

如果要在不创建插件的情况下实现相同的功能,可以导入mage文件并执行此操作。这是代码。

  

http://pravams.com/2011/11/11/magento-create-order-programmatically/