magento API v2,扩展销售/订单类 [英] magento API v2, extending sales/order class

查看:30
本文介绍了magento API v2,扩展销售/订单类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经处理 Magento API v2 好几天了.我正在尝试扩展 API 以向订单/销售类添加一个名为pago"(表示付款)的新方法.现在我可以使用 v1 WSDL 来做到这一点,但是在使用 v2 时我收到此错误:

I've been dealing with Magento API v2 for some days. I'm trying to extend the API to add a new method called "pago" (means payment) to the order/sales class. By now I'm able to do it using the v1 WSDL, but when using v2 I get this error:

程序salesOrderPago"不存在于 ...

Procedure 'salesOrderPago' not present in ...

我的 WSDL 似乎没问题 (http://www.hijole.com.py/ofertas/index.php/api/v2_soap/?wsdl)我认为我的错误在我的 api.xml 文件

My WSDL seems to be OK (http://www.hijole.com.py/ofertas/index.php/api/v2_soap/?wsdl) I think my error is somewhere in my api.xml file

<?xml version="1.0"?>
<config>
    <api>
        <resources>
            <sales_order translate="title" module="sales">
                <model>sales/order_api</model>
                <title>Order API</title>
                <acl>sales/order</acl>
                <methods>
                    <pago translate="title" module="sales">
                        <title>Acepta un pago</title>
                        <acl>sales/order/create</acl>
                    </pago>                 
                </methods>
            </sales_order>
         </resources>
     <resources_alias>
            <order>sales_order</order>
         </resources_alias>
        <v2>
            <resources_function_prefix>
                <order>salesOrder</order>
            </resources_function_prefix>
        </v2>
    </api>
</config>

这是我的 api/v2.php 文件

This is my api/v2.php file

<?php
class Neurona_Pagoexpress_Model_Sales_Order_Api_V2 extends Mage_Sales_Model_Order_Api
{
    public function pago($ref, $medio, $moneda, $boleta)
    {
    try{
        //Crea invoice para la orden
        $invoice = Mage::getModel('sales/order_invoice_api');
        $invoice->create($ref, array(), 'PagoExpress - '.$boleta);

        $aut = "4894371870891274"; //Generar con algoritmo
        return array('00','Procedimiento correcto',$aut); // 00 = OK, Pago realizado
    }
    catch (Mage_Core_Exception $e) {
        return array('99'); 
    }
}
}

这是我的conig.xml文件

<?xml version="1.0"?>
<config>
    <global>
        <models>
            <sales>
                <rewrite>
                    <order_api>Neurona_Pagoexpress_Model_Sales_Order_Api</order_api>
                    <order_api_v2>Neurona_Pagoexpress_Model_Sales_Order_Api_V2</order_api_v2>
                </rewrite>
            </sales>
        </models>
    </global>
</config>

这是我的 etc/wsdl.xml

Here is my etc/wsdl.xml

    <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
        <message name="salesOrderPagoRequest">
            <part name="sessionId" type="xsd:string" />
            <part name="orderIncrementId" type="xsd:string" />
            <part name="orderMedio" type="xsd:string" />
            <part name="orderMoneda" type="xsd:string" />
            <part name="orderBoleta" type="xsd:string" />
        </message>
        <message name="salesOrderPagoResponse">
            <part name="result" type="typens:ArrayOfString" />
        </message>

        <portType>
            <operation name="salesOrderPago">
                <documentation>Implementa el pago de una factura</documentation>
                <input message="typens:salesOrderPagoRequest" />
                <output message="typens:salesOrderPagoResponse" />
            </operation>
         </portType>

        <binding>
            <operation name="salesOrderPago">
                <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>

提前致谢!

推荐答案

我后来找到了解决方案:只需重新启动 Apache.好像是 wsdl 缓存问题.

I found the solution later: Just restart Apache. It seems to be a wsdl cache issue.

这篇关于magento API v2,扩展销售/订单类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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