For several days I have been working on the Magento API v2. I am trying to extend the API to add a new method called "pago" (means payment) to the order / sales class. Currently, I can do this using WSDL v1, but when using v2 I get this error:
The "salesOrderPago" procedure is missing in ...
My WSDL seems OK (http://www.hijole.com.py/ofertas/index.php/api/v2_soap/?wsdl) I think my error is somewhere in the 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>
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'); } } }
This is my conig.xml file
<?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>
Here is my etc / wsdl.xml file
<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>
Thanks in advance!
source share