将过滤器添加到Magento Web Services API

Chu*_*k D 6 php api soap-client magento

我正在尝试调用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);
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Jür*_*len 9

我没有使用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'
    )
);
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 9

在Magento API的v2中,您需要调整"过滤器"数组,如下所示:

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

虽然他们的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"
Run Code Online (Sandbox Code Playgroud)

'key'=>'to'
Run Code Online (Sandbox Code Playgroud)

要么

'key'=>'eq'
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我实际上能够在这里找到对'complex_filter'值的引用:http://www.magentocommerce.com/api/soap/sales/salesOrder/sales_order.list.html (2认同)

ete*_*ech 6

我认为很遗憾这里只显示PHP代码.一般使用SOAP和Web服务的一个好处是语言/实现独立性.

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

例如,使用Java和Apache Axis 2,这是我的SOAPEnvelope对象的内容.获取状态为"处理"的所有订单的列表:

<?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>
Run Code Online (Sandbox Code Playgroud)

注意,这是Magento的SOAP v2格式.