Magento代码之订单创建流程

        直接看代码吧。下面的代码是如何通过程序创建一个完美订单。

        <?php
        require_once 'app/Mage.php';
         
        Mage::app('default');//初始化程序,设置当前店铺
         
        $store = Mage::app()->getStore('default');
        //通过电子邮件获取用户,当然也可以不获取,创建guest订单
        $customer = Mage::getModel('customer/customer');
        $customer->setStore($store);
        $customer->loadByEmail('email_address@gmail.com');
         
        //初始化Quote,Magento的订单是通过Quote来转化过去的
        $quote = Mage::getModel('sales/quote');
        $quote->setStore($store);
        $quote->assignCustomer($customer);//如果有用户则执行这个
         
        $product1 = Mage::getModel('catalog/product')->load(166); /* HTC Touch Diamond */
        $buyInfo1 = array('qty' => 1);
         
        $product2 = Mage::getModel('catalog/product')->load(18); /* Sony Ericsson W810i */
        $buyInfo2 = array('qty' => 3);
        //添加商品到Quote
        $quote->addProduct($product1, new Varien_Object($buyInfo1));
        $quote->addProduct($product2, new Varien_Object($buyInfo2));
        //设置账单和收货品地址
        $billingAddress = $quote->getBillingAddress()->addData($customer->getPrimaryBillingAddress());
        $shippingAddress = $quote->getShippingAddress()->addData($customer->getPrimaryShippingAddress());
        //设置配送和支付方式
        $shippingAddress->setCollectShippingRates(true)->collectShippingRates()
                        ->setShippingMethod('flatrate_flatrate')
                        ->setPaymentMethod('checkmo');
         
        $quote->getPayment()->importData(array('method' => 'checkmo'));
        //Quote计算运费
        $quote->collectTotals()->save();
        //将Quote转化为订单
        $service = Mage::getModel('sales/service_quote', $quote);
        $service->submitAll();
        $order = $service->getOrder();
        /***至此订单已经成功生成,下面是注册付款信息***/
         
        $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
        $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
        $invoice->register();
         
        $transaction = Mage::getModel('core/resource_transaction')
                            ->addObject($invoice)
                            ->addObject($invoice->getOrder());
         
        $transaction->save();
        
        ?>

Magento代码之订单创建流程的更多相关文章

  1. PP生产订单创建、下达、报工、收货、投料

    转自http://blog.sina.com.cn/s/blog_69fb8eb60102vpjd.html SAP 物料订单创建.下达.报工.收货与投料(ABAP代码) (2015-06-03 22 ...

  2. 使用C#代码发起K2 Blackpearl流程

    转:http://www.cnblogs.com/dannyli/archive/2011/08/02/2125285.html 使用C#代码,发起一个K2的流程,其形式和链接SQL Server数据 ...

  3. ADF 项目创建流程

    ADF 项目创建流程: 1.首先建好应用 2.创建model,UI 3.创建EO,VO,AO, VL 4.设置EO的属性 5.新建lov 6.设置VO的View Accessors,并设置Attrib ...

  4. 怎样改动、扩展并重写Magento代码

    作为一个开发人员的你,肯定要改动Magento代码去适应你的业务需求,可是在非常多时候我们不希望改动Magento的核心代码,这里有非常多原因, 比如将来还希望升级Magento.还想使用很多其它的M ...

  5. 【Java基础】Java类的加载和对象创建流程的详细分析

    相信我们在面试Java的时候总会有一些公司要做笔试题目的,而Java类的加载和对象创建流程的知识点也是常见的题目之一.接下来通过实例详细的分析一下. 实例问题 实例代码 Parent类 package ...

  6. Java类的加载和对象创建流程的详细分析

    相信我们在面试Java的时候总会有一些公司要做笔试题目的,而Java类的加载和对象创建流程的知识点也是常见的题目之一.接下来通过实例详细的分析一下: package com.test; public ...

  7. 深入理解Magento-第九章-修改、扩展、重写Magento代码

    (博主提示:本章应该不是原作者的第九章,仅作补充和参考) 作为一个开发者的你,肯定要修改Magento代码去适应你的业务需求,但是在很多时候我们不希望修改Magento的核心代码,这里有很多原因,例如 ...

  8. UE4之Slate:App默认窗口的创建流程

    UE4版本:4.24.3源码编译 Windows10 + VS2019开发环境 在先前分享的基础上,现在来梳理下App启动时默认窗口的创建流程,以及相关的类.对象之间的抽象层级: 纯C++工程配置 S ...

  9. 含大量行的订单创建时候creditlimit校验最耗时间

    含大量行的订单创建时候creditlimit校验最耗时间

随机推荐

  1. asp.net发邮件功能

    protected void SendMail() { try { string CreaterName = ""; string examiner = ""; ...

  2. 【基本技能篇】>>第2篇《如何把事情做到最好——心得》

    如何把事情做到最好——全美第一本系统阐述学习与成功之道的经典著作. ——2016年2月12日 四个阅读层次:①基础阅读,具有基本阅读的能力,包括认识字,懂得词,知会句子的基本意思等.②检视阅读(也是判 ...

  3. python二进制相关

    https://docs.python.org/3/library/struct.html#module-struct

  4. guava学习--ComparisonChain

    转载:https://my.oschina.net/realfighter/blog/349824 在日常的工作中,我们经常需要对两个对象进行比较,以找出其中的异同, Java中提供了compare/ ...

  5. guava学习--monitor

    转载:https://my.oschina.net/realfighter/blog/349924   https://my.oschina.net/realfighter/blog/349926 M ...

  6. dp 动态规划 hdu 1003 1087

    动态规划就是寻找最优解的过程 最重要的是找到关系式 hdu 1003 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目大意:求最大字序列和, ...

  7. Excel函数汇总:

    /** *D1—要查找的目标值 *G:G—查找的单元格范围,G:G表示G列 *1—查找第一个匹配 *FALSE—找到结果即返回 */ VLOOKUP(D1,G:G,1,FALSE):返回查找到的单元格 ...

  8. ECMAScript6 面向对象 时钟效果

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  9. WCF传输图片解决方案

    图片无法序列化后传输,但我们可以将图片转二进制字符串传输.然后在服务端将二进制字符串转图片. 将图片转字符串的例子: private byte[] BmpToJpegBuff(Image img) { ...

  10. 更改mysql中当前auto_increment的值的方法

    最近给自己网站更改mysql中当前auto_increment的值 如果在mysql中一个表test中的ID字段设为auto_increment插入两条记录后ID=2,这时删除1条记录,再插入一条变成 ...