繁体   English   中英

将过滤器添加到 Magento Web 服务 API

[英]Adding Filters to Magento Web Services API

我正在尝试调用 Magento SOAP API 并获取特定时间段内的订单列表。 我可以连接到 API 并获得所有订单的列表,但我无法(对于我的一生)弄清楚如何过滤结果......有什么想法吗? 我返回所有订单的代码如下......

$proxy = new SoapClient('http://lalala.freelunchlabs.com/api/v2_soap/?wsdl');

// create authorized session id using api user name and api key
$sessionId = $proxy->login('myusername', 'mypassword');

$filters = array(
    'created_at' => array( '>' => '2011-04-21 02:13:00'),
    'created_at' => array( '<' => '2011-04-21 02:22:00')
);

 // Get order list
$orderinfo = $proxy->salesOrderList($sessionId,array($filters));

print_r($orderinfo);

提前致谢!

查克

在 Magento API 的 v2 中,您需要像这样调整“过滤器”数组:

$params = array('complex_filter'=>
    array(
        array('key'=>'created_at','value'=>array('key' =>'from','value' => '2012-07-05 01:01:01'))
    )
);

虽然他们的 API 在此处显示了 API v2 的示例:

http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/introduction#api_version_v2

本文档并未表明(据我所知)在使用条件语句时需要将 'filter' 替换为 'complex_filter'。

例如,您可以替换

'key'=>'from"

'key'=>'to'

或者

'key'=>'eq'

您可以使用的更完整的条件列表如下:

http://100101.kurodust.net/2008/10/24/magento-api-calls-filter-parameters/

我没有使用 Magento SOAP 2 Api 的经验,但是如果 V2 中的过滤器的工作方式与 V1 相同,您可以试试这个:

$filters = array(
    'created_at' => array(
        'from' => '2011-04-21 02:13:00',
        'to' => '2011-04-21 02:22:00'
    )
);

我认为不幸的是,这里只显示了 PHP 代码。 一般来说,使用 SOAP 和 web 服务的好处之一是语言/实现独立性。

为了引导其他人朝着正确的方向前进,我提供了适合我的 XML。 无论您使用哪种语言进行 SOAP 调用,您请求中的以下 XML 格式都应该有效。

例如,使用 Java 和 Apache Axis 2,这是我的 SOAPEnvelope object 的内容。 获取状态为“处理中”的所有订单的列表:

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <salesOrderList xmlns="urn:Magento">
            <sessionId xmlns="">12345asdf</sessionId>
            <filters xmlns="">
                <filter>
                    <associativeEntity>
                        <key>status</key>
                        <value>processing</value>
                    </associativeEntity>
                </filter>
            </filters>
        </salesOrderList>
    </soapenv:Body>
</soapenv:Envelope>

请注意,这是 Magento 的 SOAP v2 格式。

我使用了它,它在 SOAP API v2 中工作:

$params = array('complex_filter'=>
    array(
        array('key'=>'created_at','value'=>array('key' =>'from','value' => '2013-05-03 01:01:01')),
        array('key'=>'customer_id','value'=>array('key' =>'eq','value' => 3)),

    ),

);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM