magento API v2,扩展销售/订单类 [英] magento API v2, extending sales/order class
问题描述
我已经处理 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屋!