gpt4 book ai didi

api - magento API v2,扩展销售/订单类

转载 作者:行者123 更新时间:2023-12-04 12:55:50 30 4
gpt4 key购买 nike

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

Procedure 'salesOrderPago' not present in ...



我的 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>

提前致谢!

最佳答案

后来我找到了解决方案:只需重新启动Apache。这似乎是 wsdl 缓存问题。

关于api - magento API v2,扩展销售/订单类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9201036/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com