扩展Magento的API皂V2(不是该服务的有效方法) [英] Extending Magento's API Soap V2 (is not a valid method for this service)

查看:156
本文介绍了扩展Magento的API皂V2(不是该服务的有效方法)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个扩展Magento的V2 SOAP调用自定义模块。我大部分的来源都来自这个职位

<一个href=\"http://stackoverflow.com/questions/7519556/how-to-setup-custom-api-for-magento-with-soap-v2\">How设置自定义的API Magento的使用SOAP V2?

这是我做过尝试得到它的工作至今的步骤。

/app/etc/modules/Namespace_ImportExport.xml

 &LT;?XML版本=1.0&GT?;
&LT;配置&GT;
    &LT;模块&gt;
        &LT; Namespace_ImportExport&GT;
            &LT;积极&GT;真&LT; /主动&GT;
            &LT; codePOOL&GT;地方&LT; / codePOOL&GT;
            &LT;&取决于GT;
                &LT; Mage_Core /&GT;
            &LT; /取决于&GT;
        &LT; / Namespace_ImportExport&GT;
    &LT; /模块&gt;
&LT; /配置&GT;

/app/$c$c/local/Namespace/ImportExport/etc/api.xml

 &LT;?XML版本=1.0&GT?;
&LT;配置&GT;
   &LT;&API GT;
     &LT;资源&GT;
       &LT; importexport&GT;
            &LT;模型&GT; namespace_importexport / API&LT; /型号:GT;
            &LT;标题&GT; API测试&LT; /标题&GT;
            &lt;方法&GT;
                &LT;富翻译=标题模块=importexport&GT;
                    &LT;标题&GT;富测试与LT; /标题&GT;
                    &LT;方法&gt;&foo的LT; /方法&gt;
                &LT; / foo的&GT;
            &LT; /方法&gt;
       &LT; / importexport&GT;
    &LT; /资源&GT;
    &LT; v2和GT;
        &LT; resources_function_ preFIX&GT;
           &LT; importexport&GT; importexport&LT; / importexport&GT;
        &LT; / resources_function_ preFIX&GT;
    &LT; / v2和GT;
  &LT; / API&GT;
&LT; /配置&GT;

/app/$c$c/local/Namespace/ImportExport/etc/config.xml

 &LT;配置&GT;
    &LT;模块&gt;
        &LT; Namespace_ImportExport&GT;
            &LT;&版GT; 0.0.1&LT; /版本&GT;
        &LT; / Namespace_ImportExport&GT;
    &LT; /模块&gt;
    &LT;全球&GT;
        &LT;&车型GT;
            &LT; importexport&GT;&LT;类别和GT; Namespace_ImportExport_Model&LT; /班&GT;&LT; / importexport&GT;
        &LT; /型号:GT;
        &LT;&车型GT;
            &LT;目录和GT;
                &LT;&改写GT;
                    &LT; product_api_v2&GT; Namespace_ImportExport_Model_Product_Api_V2&LT; / product_api_v2&GT;
                &LT; /重写&GT;
            &LT; /目录&GT;
        &LT; /型号:GT;
    &LT; /全球&GT;
&LT; /配置&GT;

/app/$c$c/local/Namespace/ImportExport/etc/wsdl.xml

在这里,我在写了一些现有模块声明,但你会发现在底部我的自定义模块声明

 &LT;?XML版本=1.0编码=UTF-8&GT?;
&LT;定义的xmlns:typens =瓮:{{VAR wsdl.name}}的xmlns:XSD =htt​​p://www.w3.org/2001/XMLSchema中的xmlns:SOAP =HTTP://schemas.xmlsoap .ORG / WSDL / SOAP /
    的xmlns:SOAPENC =htt​​p://schemas.xmlsoap.org/soap/encoding/的xmlns:WSDL =htt​​p://schemas.xmlsoap.org/wsdl/的xmlns =htt​​p://schemas.xmlsoap.org / WSDL /
    NAME ={{VAR wsdl.name}}的targetNamespace =瓮:{{VAR wsdl.name}}&GT;
    &LT;各类&GT;
        &LT;架构的xmlns =htt​​p://www.w3.org/2001/XMLSchema中的targetNamespace =瓮:Magento的&GT;
            &LT;进口命名空间=htt​​p://schemas.xmlsoap.org/soap/encoding/的schemaLocation =htt​​p://schemas.xmlsoap.org/soap/encoding//&GT;
            &LT;复杂类型名称=catalogProductCreateEntity&GT;
                &LT;所有&GT;
                    &LT;元素名称=类别TYPE =typens:ArrayOfString的minOccurs =0/&GT;
                    &LT;元素名称=网站TYPE =typens:ArrayOfString的minOccurs =0/&GT;
                    &LT;元素名称=相关的TYPE =typens:ArrayOfString的minOccurs =0/&GT;
                    &LT;元素名称=名称TYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=说明TYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=SHORT_DESCRIPTIONTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=权重TYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=身份TYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=url_keyTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=url_pathTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=可视性TYPE =XSD:字符串的minOccurs =0/&GT;
                    &所述;元素名称=category_ids类型=typens:ArrayOfString的minOccurs =0/&GT;
                    &所述;元素名称=website_ids类型=typens:ArrayOfString的minOccurs =0/&GT;
                    &LT;元素名称=has_optionsTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=gift_message_availableTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=价格型=XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=special_priceTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=special_from_dateTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=special_to_dateTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=tax_class_idTYPE =XSD:字符串的minOccurs =0/&GT;
                    &所述;元素名称=tier_price类型=typens:ArrayOfString的minOccurs =0/&GT;
                    &LT;元素名称=meta_titleTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=meta_keywordTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=meta_descriptionTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=custom_designTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=custom_layout_updateTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=options_containerTYPE =XSD:字符串的minOccurs =0/&GT;
                    &所述;元素名称=additional_attributes类型=typens:associativeArray的minOccurs =0/&GT;
                &LT; /所有与GT;
            &LT; /复杂类型&GT;
            &LT;复杂类型名称=catalogProductReturnEntity&GT;
                &LT;所有&GT;
                    &LT;元素名称=PRODUCT_IDTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=SKU​​TYPE =XSD:字符串的minOccurs =0/&GT;
                    &所述;元素名称=设置类型=XSD:字符串的minOccurs =0/&GT;
                    &所述;元素名称=类型类型=XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=类别TYPE =typens:ArrayOfString的minOccurs =0/&GT;
                    &LT;元素名称=网站TYPE =typens:ArrayOfString的minOccurs =0/&GT;
                    &LT;元素名称=相关的TYPE =typens:ArrayOfString的minOccurs =0/&GT;
                    &LT;元素名称=created_atTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=的updated_atTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=TYPE_IDTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=名称TYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=说明TYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=SHORT_DESCRIPTIONTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=权重TYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=身份TYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=url_keyTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=url_pathTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=可视性TYPE =XSD:字符串的minOccurs =0/&GT;
                    &所述;元素名称=category_ids类型=typens:ArrayOfString的minOccurs =0/&GT;
                    &所述;元素名称=website_ids类型=typens:ArrayOfString的minOccurs =0/&GT;
                    &LT;元素名称=has_optionsTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=gift_message_availableTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=价格型=XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=special_priceTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=special_from_dateTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=special_to_dateTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=tax_class_idTYPE =XSD:字符串的minOccurs =0/&GT;
                    &所述;元素名称=tier_price类型=typens:ArrayOfString的minOccurs =0/&GT;
                    &LT;元素名称=meta_titleTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=meta_keywordTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=meta_descriptionTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=custom_designTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=custom_layout_updateTYPE =XSD:字符串的minOccurs =0/&GT;
                    &LT;元素名称=options_containerTYPE =XSD:字符串的minOccurs =0/&GT;
                    &所述;元素名称=additional_attributes类型=typens:associativeArray的minOccurs =0/&GT;
                &LT; /所有与GT;
            &LT; /复杂类型&GT;
        &LT; /模式&GT;
    &LT; /类型&GT;
    &LT;消息名称=importexportFooRequest&GT;
        &LT;部分名称=的sessionIdTYPE =XSD:字符串/&GT;
    &LT; /消息&GT;
    &LT;消息名称=importexportFooResponse&GT;
        &LT;部分名称=结果TYPE =typens:布尔/&GT;
    &LT; /消息&GT;
    &LT;端口类型名称={{VAR wsdl.handler}}端口类型&GT;
        &lt;操作NAME =importexportFoo&GT;
            &LT;文档与GT; ImportExport美孚&LT; /文件&GT;
            &LT;输入消息=typens:importexportFooRequest/&GT;
            &LT;输出消息=typens:importexportFooResponse/&GT;
        &LT; /运转&gt;
    &LT; /端口类型&GT;
    &LT;绑定名称={{VAR wsdl.handler}}绑定TYPE =typens:{{VAR wsdl.handler}}端口类型&GT;
        &LT;肥皂:绑定样式=RPC传输=htt​​p://schemas.xmlsoap.org/soap/http/&GT;
        &lt;操作NAME =importexportFoo&GT;
            &LT;肥皂:操作的soapAction =瓮:{{VAR wsdl.handler}}行动/&GT;
            &LT;输入&GT;
                &LT;肥皂:机身空间=瓮:{{VAR wsdl.name}}使用=EN codeD的encodingStyle =htt​​p://schemas.xmlsoap.org/soap/encoding//&GT;
            &LT; /输入&GT;
            &LT;输出&GT;
                &LT;肥皂:机身空间=瓮:{{VAR wsdl.name}}使用=EN codeD的encodingStyle =htt​​p://schemas.xmlsoap.org/soap/encoding//&GT;
            &所述; /输出GT;
        &LT; /运转&gt;
    &LT; /&结合GT;
&LT; /定义&GT;

/app/$c$c/local/Namespace/ImportExport/Model/Api.php

 &LT; PHP
类Namespace_ImportExport_Model_Api扩展Mage_Api_Model_Resource_Abstract
{
    / **
     *返回安装的Magento版本
     * @返回字符串
     * /    公共函数foo(){
        返回true;
    }
}
?&GT;

/app/$c$c/local/Namespace/ImportExport/Model/API/V2.php

 &LT; PHP
类Namespace_ImportExport_Model_Api_V2扩展Namespace_ImportExport_Model_Api
{
    公共函数foo(){
        返回true;
    }
}
?&GT;

和我进行呼叫,像这样......

  $ fclient =新SoapClient的($配置['从'] ['soap_url']);
$ fsession = $ fclient-&GT;登录(['从'] ['用户名'] ['从'],$配置['API_KEY'] $配置)
后续代码var_dump($ fclient-&GT; importexportFoo($ fsession));

这对我的知识是生活必需品,让我的自定义API V2模块的工作。那么,我可不可以是做错了?

我收到此为错误

 功能(importexportFoo)是不是该服务的有效方法


解决方案

我刚刚过这种问题。

检查 $配置的价值['从'] ['soap_url']制作API调用时。如果该值看起来像 http://example.com/api/soap?wsdl 那么你还在做,以V1的调用。更新它看起来像这样 http://example.com/api/v2_soap/?wsdl

I am trying to create a custom module that extends magento V2 soap calls. Most of my sources came from this post

How to setup custom api for Magento with SOAP V2?

This is the steps I've done to try to get it to work so far.

/app/etc/modules/Namespace_ImportExport.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Namespace_ImportExport>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Core />
            </depends>
        </Namespace_ImportExport>
    </modules>
</config>

/app/code/local/Namespace/ImportExport/etc/api.xml

<?xml version="1.0"?>
<config>
   <api>
     <resources>
       <importexport>
            <model>namespace_importexport/api</model>
            <title>api test</title>
            <methods>
                <foo translate="title" module="importexport">
                    <title>Foo Test</title>
                    <method>foo</method>
                </foo>
            </methods>
       </importexport>
    </resources>
    <v2>
        <resources_function_prefix>
           <importexport>importexport</importexport>
        </resources_function_prefix>
    </v2>
  </api>
</config>

/app/code/local/Namespace/ImportExport/etc/config.xml

<config>
    <modules>
        <Namespace_ImportExport>
            <version>0.0.1</version>
        </Namespace_ImportExport>
    </modules>
    <global>
        <models>
            <importexport><class>Namespace_ImportExport_Model</class></importexport>
        </models>
        <models>
            <catalog>
                <rewrite>
                    <product_api_v2>Namespace_ImportExport_Model_Product_Api_V2</product_api_v2>
                </rewrite>
            </catalog>
        </models>
    </global>
</config>

/app/code/local/Namespace/ImportExport/etc/wsdl.xml

Here I over wrote some existing modules declarations but you will find my custom module declarations at the bottom

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:typens="urn:{{var wsdl.name}}" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"
    name="{{var wsdl.name}}" targetNamespace="urn:{{var wsdl.name}}">
    <types>
        <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento">
            <import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" />
            <complexType name="catalogProductCreateEntity">
                <all>
                    <element name="categories" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="websites" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="associated" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="name" type="xsd:string" minOccurs="0" />
                    <element name="description" type="xsd:string" minOccurs="0" />
                    <element name="short_description" type="xsd:string" minOccurs="0" />
                    <element name="weight" type="xsd:string" minOccurs="0" />
                    <element name="status" type="xsd:string" minOccurs="0" />
                    <element name="url_key" type="xsd:string" minOccurs="0" />
                    <element name="url_path" type="xsd:string" minOccurs="0" />
                    <element name="visibility" type="xsd:string" minOccurs="0" />
                    <element name="category_ids" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="website_ids" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="has_options" type="xsd:string" minOccurs="0" />
                    <element name="gift_message_available" type="xsd:string" minOccurs="0" />
                    <element name="price" type="xsd:string" minOccurs="0" />
                    <element name="special_price" type="xsd:string" minOccurs="0" />
                    <element name="special_from_date" type="xsd:string" minOccurs="0" />
                    <element name="special_to_date" type="xsd:string" minOccurs="0" />
                    <element name="tax_class_id" type="xsd:string" minOccurs="0" />
                    <element name="tier_price" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="meta_title" type="xsd:string" minOccurs="0" />
                    <element name="meta_keyword" type="xsd:string" minOccurs="0" />
                    <element name="meta_description" type="xsd:string" minOccurs="0" />
                    <element name="custom_design" type="xsd:string" minOccurs="0" />
                    <element name="custom_layout_update" type="xsd:string" minOccurs="0" />
                    <element name="options_container" type="xsd:string" minOccurs="0" />
                    <element name="additional_attributes" type="typens:associativeArray" minOccurs="0" />
                </all>
            </complexType>
            <complexType name="catalogProductReturnEntity">
                <all>
                    <element name="product_id" type="xsd:string" minOccurs="0" />
                    <element name="sku" type="xsd:string" minOccurs="0" />
                    <element name="set" type="xsd:string" minOccurs="0" />
                    <element name="type" type="xsd:string" minOccurs="0" />
                    <element name="categories" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="websites" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="associated" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="created_at" type="xsd:string" minOccurs="0" />
                    <element name="updated_at" type="xsd:string" minOccurs="0" />
                    <element name="type_id" type="xsd:string" minOccurs="0" />
                    <element name="name" type="xsd:string" minOccurs="0" />
                    <element name="description" type="xsd:string" minOccurs="0" />
                    <element name="short_description" type="xsd:string" minOccurs="0" />
                    <element name="weight" type="xsd:string" minOccurs="0" />
                    <element name="status" type="xsd:string" minOccurs="0" />
                    <element name="url_key" type="xsd:string" minOccurs="0" />
                    <element name="url_path" type="xsd:string" minOccurs="0" />
                    <element name="visibility" type="xsd:string" minOccurs="0" />
                    <element name="category_ids" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="website_ids" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="has_options" type="xsd:string" minOccurs="0" />
                    <element name="gift_message_available" type="xsd:string" minOccurs="0" />
                    <element name="price" type="xsd:string" minOccurs="0" />
                    <element name="special_price" type="xsd:string" minOccurs="0" />
                    <element name="special_from_date" type="xsd:string" minOccurs="0" />
                    <element name="special_to_date" type="xsd:string" minOccurs="0" />
                    <element name="tax_class_id" type="xsd:string" minOccurs="0" />
                    <element name="tier_price" type="typens:ArrayOfString" minOccurs="0" />
                    <element name="meta_title" type="xsd:string" minOccurs="0" />
                    <element name="meta_keyword" type="xsd:string" minOccurs="0" />
                    <element name="meta_description" type="xsd:string" minOccurs="0" />
                    <element name="custom_design" type="xsd:string" minOccurs="0" />
                    <element name="custom_layout_update" type="xsd:string" minOccurs="0" />
                    <element name="options_container" type="xsd:string" minOccurs="0" />
                    <element name="additional_attributes" type="typens:associativeArray" minOccurs="0" />
                </all>
            </complexType>
        </schema>
    </types>
    <message name="importexportFooRequest">
        <part name="sessionId" type="xsd:string" />
    </message>
    <message name="importexportFooResponse">
        <part name="result" type="typens:boolean" />
    </message>
    <portType name="{{var wsdl.handler}}PortType">
        <operation name="importexportFoo">
            <documentation>ImportExport Foo</documentation>
            <input message="typens:importexportFooRequest" />
            <output message="typens:importexportFooResponse" />
        </operation>
    </portType>
    <binding name="{{var wsdl.handler}}Binding" type="typens:{{var wsdl.handler}}PortType">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
        <operation name="importexportFoo">
            <soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
            <input>
                <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
            </input>
            <output>
                <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
            </output>
        </operation>
    </binding>
</definitions>

/app/code/local/Namespace/ImportExport/Model/Api.php

<?php
class Namespace_ImportExport_Model_Api extends Mage_Api_Model_Resource_Abstract
{
    /**
     * Returns version of the installed magento
     * @return String
     */

    public function foo() {
        return true;
    }
}
?>

/app/code/local/Namespace/ImportExport/Model/API/V2.php

<?php
class Namespace_ImportExport_Model_Api_V2 extends Namespace_ImportExport_Model_Api
{
    public function foo() {
        return true;
    }
}
?>

And I make the call, like so...

$fclient = new SoapClient($config['from']['soap_url']);
$fsession = $fclient->login($config['from']['username'], $config['from']['api_key']);
var_dump($fclient->importexportFoo($fsession));

This to my knowledge is the bare necessities to get my custom api V2 module working. So what could I possibly be doing wrong ?

I am getting this for an error

Function ("importexportFoo") is not a valid method for this service

解决方案

I've just had this kind of issue.

Check the value of $config['from']['soap_url'] when making the API call. If the value looks like http://example.com/api/soap?wsdlthen you are still making a call to V1. Update it to look like this http://example.com/api/v2_soap/?wsdl.

这篇关于扩展Magento的API皂V2(不是该服务的有效方法)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆