我试图弄清楚为什么 eBay API 的 GetOrders 函数不能正常工作。下面是我传递的 header (在Perl中):
$objHeader->push_header('X-EBAY-API-COMPATIBILITY-LEVEL' => $compatabilityLevel);
$objHeader->push_header('X-EBAY-API-DEV-NAME' => $devID);
$objHeader->push_header('X-EBAY-API-APP-NAME' => $appID);
$objHeader->push_header('X-EBAY-API-CERT-NAME' => $certID);
$objHeader->push_header('X-EBAY-API-CALL-NAME' => 'GetOrders');
$objHeader->push_header('X-EBAY-API-SITEID' => '3');
$objHeader->push_header('Content-Type' => 'text/xml');
...而我传递的XML如下:
<?xml version="1.0" encoding="utf-8" ?>
<GetOrdersRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<DetailLevel>ReturnAll</DetailLevel>
<NumberOfDays>3</NumberOfDays>
<OrderRole>Seller</OrderRole><OrderStatus>Active</OrderStatus>
<RequesterCredentials><eBayAuthToken>$userToken</eBayAuthToken></RequesterCredentials>
</GetOrdersRequest>
(显然 $ userToken 被替换为我的实际用户 token )
我从中得到回报:
$VAR1 = {
'xmlns' => 'urn:ebay:apis:eBLBaseComponents',
'Build' => 'E929_CORE_APIXO_17568878_R1',
'PageNumber' => '1',
'PaginationResult' => {
'TotalNumberOfPages' => '0',
'TotalNumberOfEntries' => '0'
},
'OrderArray' => {},
'Ack' => 'Success',
'HasMoreOrders' => 'false',
'Timestamp' => '2015-06-29T09:49:25.963Z',
'Version' => '929',
'ReturnedOrderCountActual' => '0',
'OrdersPerPage' => '100'
};
..但是如您所见,没有结果。我知道有一个结果(据我所知,它已经与PHP API一起使用了相同类型的值)。最坏的情况是,我可以创建一个基本的PHP脚本来获取结果,然后通过管道传输到Perl脚本中。显然,这并不是理想的选择(我更希望将所有内容都用一种编程语言编写)
任何人有任何想法吗?我在上面画了一个空白:/
最佳答案
好吧,我知道这会发生。经过2天的奋战,然后我发布了一些内容-找到了解决方法:)
问题是我在XML中传递了以下内容:<OrderStatus>Active</OrderStatus>
实际上,它必须是:<OrderStatus>Completed</OrderStatus>
现在可以完美地抓住它们了:)