如何扩展Magento的创建发票流程


How to extend Magento's create invoice process?

我正在使用Magento 1.9,基本上我需要做的是在创建发票后向外部API发送请求,其中包含发票中的信息(例如项目ID,价格等)。

你对此有什么想法吗?谢谢

我认为正确的方法是:

  • 创建自定义模块
  • 在成功结账时添加观察者
  • 在处理程序内部获取所有必要的订单详细信息并进行外部调用

Magento支持与Google Analytics的开箱即用工作,并且在成功结帐时,它基本上正在做同样的事情来跟踪订单,尽管它不是调用外部API,而是呈现在客户端处理的带有订单的特殊标签。你可以在app/core/Mage/GoogleAnalytics中查看该模块。

您可以通过自定义模块观察器执行此操作。像这样逐步编写自定义模块。

/

app/etc/modules/Custom_Orderinfo.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Custom_Orderinfo>
            <active>true</active>
            <codePool>local</codePool>
        </Custom_Orderinfo>
    </modules>
</config> 

app/code/local/Custom/Orderinfo/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Custom_Orderinfo>
            <version>0.1.0</version>
        </Custom_Orderinfo>
    </modules>
  <frontend>
    <events>
    <checkout_onepage_controller_success_action>
        <observers>
             <your_sales_order_observer>
                     <type>singleton</type>
                    <class>orderinfo/observer</class>
                    <method>sendOrderInfo</method>
             </your_sales_order_observer>
       </observers>
    </checkout_onepage_controller_success_action>
     </events>
   </frontend>
    <global>
        <models>
            <orderinfo>
                <class>Custom_Orderinfo_Model</class>
            </orderinfo>
        </models>
        <resources>
            <orderinfo_setup>
                <setup>
                    <module>Custom_Orderinfo</module>
                </setup>
            </orderinfo_setup>
        </resources>
        <helpers>
            <orderinfo>
                <class>Custom_Orderinfo_Helper</class>
            </orderinfo>
        </helpers>
    </global>
</config>

app/code/local/Custom/Orderinfo/Model/Observer.php

<?php
class Custom_Orderinfo_Model_Observer 
{
    public function sendOrderInfo($observer)
    {
        $event = $observer->getEvent();
        $orderIds = $event->getOrderIds();
        foreach($orderIds as $orderId)
        {
            $order = Mage::getModel('sales/order')->load($orderId);
            $items=$order->getAllItems();
            Mage::log($orderId,null,"order_success.log");
            /**
            * do whatever you want to do here
            */
        }
    }
}

app/code/local/Custom/Orderinfo/Helper/Data.php

<?php
class Custom_Orderinfo_Helper_Data extends Mage_Core_Helper_Abstract
{
}

祝你好运!