博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
magento 通过程序创建客户和订单
阅读量:6037 次
发布时间:2019-06-20

本文共 3860 字,大约阅读时间需要 12 分钟。

hot3.png

1.首先创建一个用户,并创建改用户登录的session

$customer = Mage::getModel('customer/customer');//$customer  = new Mage_Customer_Model_Customer(); $password = '123456';$email = 'ajzele@mymail.com'; $customer->setWebsiteId(Mage::app()->getWebsite()->getId());$customer->loadByEmail($email);//Zend_Debug::dump($customer->debug()); exit; if(!$customer->getId()) { $customer->setEmail($email);$customer->setFirstname('Johnny');$customer->setLastname('Doels');$customer->setPassword($password);} try {$customer->save();$customer->setConfirmation(null);$customer->save(); //Make a "login" of new customerMage::getSingleton('customer/session')->loginById($customer->getId());} catch (Exception $ex) {//Zend_Debug::dump($ex->getMessage());}

这段代码可运行在magento的任何地方

这样我们就创建了一个新的用户,并让他是登陆的状态

现在给这个用户添加shipping和billing address,记住这是订单所必须的,这里的情况是使用同样的地址于shipping和billing address

你也可以创建不同的地址,给不同的默认地址

//Build billing and shipping address for customer, for checkout$_custom_address = array ('firstname' => 'Branko','lastname' => 'Ajzele','street' => array ('0' => 'Sample address part1','1' => 'Sample address part2',), 'city' => 'Osijek','region_id' => '','region' => '','postcode' => '31000','country_id' => 'HR', /* Croatia */'telephone' => '0038531555444',); $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));Mage::getSingleton('checkout/session')->getQuote()->setshippingAddress(Mage::getSingleton('sales/quote_address')->importCustomerAddress($customAddress));

//这两句要单独理解,按流程来看,先是给添加产品到购物车才会产生quote,接着到checkout页面,保存地址到quote

来给购物车添加产品

/* If we wish to load some product by some attribute value diferent then id */$product = Mage::getModel('catalog/product')->getCollection()/* Remember, you can load/find product via any attribute, better if its attribute with unique value */->addAttributeToFilter('sku', 'some-sku-value')->addAttributeToSelect('*')->getFirstItem(); /* Do a full product load, otherwise you might get some errors related to stock item */$product->load($product->getId()); $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->save();}catch (Exception $ex) {echo $ex->getMessage();} unset($product);

最后创建保存订单

$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();} /* Clear the cart */ $cart->truncate();$cart->save();$cart->getItems()->clear()->save(); /* Logout the customer you created */Mage::getSingleton('customer/session')->logout();

这些代码基于magento 1.3老版本了,最新的版本需要测试是否可用,主要的作用是帮助理解流程,有些片段代码还是很有用的,比如添加修改客户的默认地址

转载于http://inchoo.net/magento/programming-magento/programatically-create-customer-and-order-in-magento-with-full-blown-one-page-checkout-process-under-the-hood/

部分翻译,部分自写

转载于:https://my.oschina.net/liufeng815/blog/547917

你可能感兴趣的文章
《Python和Pygame游戏开发指南》——1.11 行号和空格
查看>>
《树莓派开发实战(第2版)》——2.6 使用控制台线联网
查看>>
《移动App测试的22条军规》——第1章,第1.3节设备的硬件参数
查看>>
首届未来科学大奖得主薛其坤:神奇的量子世界
查看>>
《Storm技术内幕与大数据实践》一1.1 Storm的基本组件
查看>>
【MySQL】恢复误操作的方法
查看>>
《AR与VR开发实战》导读
查看>>
Erlang入门(一)
查看>>
《Java和Android开发学习指南(第2版)》—— 1.2 第一个Java程序
查看>>
科学音频处理(三):如何使用 Octave 的高级数学技术处理音频文件
查看>>
《JavaScript设计模式》——9.11 Mixin模式
查看>>
springcloud(六):配置中心git示例
查看>>
《深入理解JavaScript》——2.2 JavaScript优雅吗
查看>>
69道Spring面试题和答案
查看>>
大数据与机器学习:实践方法与行业案例导读
查看>>
《HTML5开发手册》——1.3 初学者“菜谱”:使用header元素建立网站标头
查看>>
平均提速20倍!Oracle 12c In-Memory最佳实践
查看>>
Linux下装Tomcat安装并使用
查看>>
当设计消息队列时我们关心什么
查看>>
PostgreSQL 10.0 preview 功能增强 - OLAP增强 向量聚集索引(列存储扩展)
查看>>