`
yanggaojiao
  • 浏览: 81787 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Magento web services API 扩展

阅读更多
<?xml version="1.0"?>
<config>
    <modules>

        <Example_Webservices>
            <active>true</active>
            <codePool>local</codePool>
        </Example_Webservices>
    </modules>
</config>

 Magento提供了一个便捷的API来于其他类型的系统进行整合,而且这些API也可以在用户需要的时候做相应的扩展来完成一些默认的API没有提供的功能。但是错误的override Magento核心代码将给系统升级带来兼容性问题。下面的是一个能避免与Magento将来版本出现不兼容问题的例子。

首先,我们先对Magento的API进行定位,在app/code/core/Mage/Sales/Model/Order/Api.php中对API进行了定义。举个例子:我们需要根据客户的ID来查看客户订单(系统默认只提供了通过increment IDs来查看,例如 "#100000003",其实就是订单号)。通过我们的研究,发现Api.php中的_initOrder()方法:

 

 protected function _initOrder($orderIncrementId)
    {
        $order = Mage::getModel('sales/order');
 
        /* @var $order Mage_Sales_Model_Order */
 
        $order->loadByIncrementId($orderIncrementId);
 
        if (!$order->getId()) {
            $this->_fault('not_exists');
        }
 
        return $order;
    }

 

  

要完成我们的所需的扩展需要override这个方法,我们可以copy该Api.php到app/code/local(当然保持相似的目录结构), 但是我们只需要修改一个方法,所以只需要override该方法即可(这就是Magento的灵活之处)。
Create Example_Webservices.xml in app/etc/modules,内容如下:

 

Create the directory app/code/local/Example/Webservices/etc, and create config.xml containing:

<?xml version="1.0"?>
<config>
    <global>
        <models>
            <sales>
                <rewrite>
                    <order_api>Example_Webservices_Model_Sales_Order_Api</order_api>
                </rewrite>
            </sales>
        </models>
    </global>
</config>
 

上面的代码是我们overriding一个module时的基本形式。这样子我们已经把到Mage_Sales_Model_Order_Api的所有请求rewrite到Example_Webservices_Model_Sales_Order_Api。

最后,我们建立自己的model来override所有我们想要override的方法.
Create app/code/local/Example/Webservices/Model/Sales/Order/Api.php containing:

class Example_Webservices_Model_Sales_Order_Api extends Mage_Sales_Model_Order_Api
{
    protected function _initOrder($orderIncrementId)
    {
        $order = Mage::getModel('sales/order');
 
        if(is_string($orderIncrementId)) {
            $order->loadByIncrementId($orderIncrementId);
            if (!$order->getId()) {
                $this->_fault('not_exists');
            }
        } else {
            $order->load($orderIncrementId);
            if (!$order->getId()) {
                $this->_fault('not_exists');
            }
        }
        return $order;
    }
}
 

通过上面的方法,以最少的改动来满足我们的要求同时有不影响系统的更新。

(This class overrides the original model class we're overriding - this way, we only change the specific methods we want to change and minimise the chance of interfering with an upgrade. The modifications to the body of the method are quite simple. Instead of always loading by increment ID, we first check if the $orderIncrementId parameter we are passed is a string. If it's a string, we do an increment ID lookup; if not, we assume it's an ID and look up on that. This works in a similar way to products, where you can use the API to get a product by either ID or SKU.

If your Magento store needs to work with another application in a way that Magento doesn't support, this simple example shows how easy it is to extend Magento's web services API's to allow you to achieve the integration that you require.)

0
4
分享到:
评论

相关推荐

    magento_CreateCoupon:扩展了Magento 1.9 REST API createget优惠券代码

    magento_CreateCoupon 扩展了Magento 1.9 REST API创建/获取优惠券代码

    Magento-RestApi:Magento REST API的异步C#客户端

    Magento.RestApi-异步C#Magento REST API客户端是一个开放源代码电子商务平台,允许外部应用程序通过SOAP API或REST API与之交互。 仅在Magento的1.7版本中可用。... var client = new MagentoApi

    Magento API 速查(alan storm).pdf

    ### Magento API 速查知识点详解 #### 一、概述 Magento Core API 是为 Magento 社区版 1.6.1 提供的核心 API 接口文档。这些接口为开发者提供了与 Magento 后台数据交互的能力,包括商店管理、国家地区管理等功能...

    python-magento:使用Python API访问magento API

    用于连接到Magento Web服务的Python库。 用法 import magento url = 'http://domain.com/' apiuser = 'user' apipass = 'password' # Create an instance of API client = magento . API ( url , apiuser , apipass...

    Laravel开发-magento

    在IT行业中,Laravel和Magento是两个非常重要的开源框架,分别用于Web开发和电子商务平台构建。...理解并熟练掌握如何利用Magento的SOAP API在Laravel中进行集成,是提升Web应用功能和用户体验的关键。

    [Magento] Magento 扩展开发入门教程 (英文版)

    [Packt Publishing] Magento 扩展开发入门教程 (英文版) [Packt Publishing] Getting Started with Magento Extension Development (E-Book) ☆ 图书概要:☆ Understand Magento extensions, and build your own...

    magento-stock-movements, Magento扩展,节省产品库存.zip

    magento-stock-movements, Magento扩展,节省产品库存 节省你的Magento产品的库存 特性将库存移动保存在产品修改页面的新标签中安装 Magento 1.5. x, 1.6. x, 1.7. x, 1.8. x, 1.9.x使用 modgit 安装:$ cd/pat

    magento-rest-api:客户端访问Magento Rest API

    Magento Rest API客户端基于Node.js的客户端与Magento REST Api进行交互。 ##使用指南var magentoRestApi = require('magento-rest-api');// Create api objectvar api = magentoRestApi.createClient({ consumerKey...

    Laravel开发-laravel5-magento

    Laravel 是一款优雅的 PHP 框架,用于构建高效、可维护的 Web 应用程序,而 Magento 是一个强大的电子商务平台,为商家提供全面的在线销售解决方案。将 Laravel 与 Magento 结合,可以利用两者的优点,实现定制化的...

    Banner Slider for Magento 2 幻灯片扩展插件

    Magento 2 Banner Slider仍然具有以前版本的全部功能,可以在第一时间吸引客户。1.以醒目的图像吸引客户的注意力 2.选择多达36个位置和各种效果来显示幻灯片 3.使用横幅滑块突出显示您的宣传,活动或任何活动 4.查看...

    Magento2-SmartSearch, Magento2 SmartSearch扩展.zip

    Magento2-SmartSearch, Magento2 SmartSearch扩展 2.0 SmartSearch Magento 2型搜索实现。 在不重新加载页面的情况下显示栏下找到的产品列表。 这是一个基本的扩展,没有任何配置选项,它将默认的Magento自动完成...

    magento-java-master.zip_magento

    4. **Magento API资源**:Magento提供了丰富的API资源,包括顾客管理、订单处理、产品信息、库存管理等。你需要熟悉每个资源的端点、方法(GET、POST、PUT、DELETE)以及它们所需的参数。 5. **异常处理**:在与...

    Magento-Extension-MobileDetect:MobileDetect.net是用于检测移动设备的轻量级PHP类。 优化Web的Magento扩展允许从Magento内部使用Mobile Detect的功能

    优化Web的MobileDetect Magento扩展 MobileDetect.net是用于检测移动设备的轻量级PHP类。 Optimize Web的Magento扩展允许从Magento内部使用Mobile Detect的功能。 用法 Mage::helper('mobiledetect')-&gt;isMobile() ...

    magento扩展功能-bestselling

    总之,“Bestselling”扩展是Magento生态系统中的一个重要部分,它利用Magento的MVC架构和丰富的API,提供了动态展示最畅销商品的功能,有助于提高网站的用户体验和商业效益。通过理解和利用这类扩展,商家可以更好...

    magento官方文档翻译超好

    Magento是一款基于PHP的企业级电子商务平台,以其强大的功能、灵活性以及可扩展性著称。在Magento中,数据处理是一个核心组成部分,尤其涉及到数据封装与集合管理等方面。本文将深入探讨Magento中的数据层操作与数据...

    nusoap,magento导出数据到ecshop

    这些数据通常是通过Magento的REST API或SOAP API(如果已启用)获取的。然后,我们需要将这些数据转换成ECShop可以理解的格式,并使用ECShop的API进行导入。 具体步骤可能包括以下几点: 1. **数据提取**:使用...

    magento常用插件

    Magento 评论页面增加验证码功能插件 适用1.4-1.7 Magento 根据客户历史购买金额自动升级用户组功能插件 积分最新版本适用1.5-1.7 自定义运费 最新客户结算时允许可以对订单留言和留下联系email 批量导入导出产品...

    magento-api-rest:NodeJS包装器与Magento REST API通信

    Magento API REST 一个与Magento REST API一起使用的Node.js客户端包装。安装 npm i magento-api-rest入门按照生成API凭证。 确保检查资源访问是否符合您的要求,以防止滥用API密钥。 查看可以操纵的Magento API端点...

    magento二次开发大全

    5. **API接口**:Magento提供API接口,允许与其他系统集成,如CRM、ERP等。`API接口.txt`可能详细阐述了如何定义、调用和测试Magento API。 6. **后台功能和表单元素**:Magento的后台管理界面允许管理员配置商店的...

    Magento-中文开发教程.doc

    Magento提供RESTful API和SOAP API,便于与其他系统集成,如ERP、CRM、物流等。通过API,你可以实现自动化数据同步、远程订单处理等功能。 六、Magento的性能优化 由于Magento的复杂性,性能优化是一个重要话题。你...

Global site tag (gtag.js) - Google Analytics