我有几天一直在处理Magento API v2。我正在尝试扩展API以向订单/销售类添加名为“pago”(意味着付款)的新方法。 到现在为止我可以使用v1 WSDL来实现它,但是当使用v2时我得到了这个错误:
程序'salesOrderPago'不存在于......
我的WSDL似乎没问题(http://www.hijole.com.py/ofertas/index.php/api/v2_soap/?wsdl) 我认为我的错误位于我的api.xml文件
中<?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文件
<?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
<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>
提前致谢!
答案 0 :(得分:1)
我后来找到了解决方案:只需重新启动Apache。这似乎是一个wsdl缓存问题。