[英]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 的示例:
本文档并未表明(据我所知)在使用条件语句时需要将 '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.