Вот XML, который я вызываю на ebay. Я получаю все выполненные предметы, кроме тех, которые были выполнены без оплаты (которую я прочитал, я должен получить обратно).
Я бы предпочел иметь метод, который вызывает только «Ожидание платежа», «Ожидание доставки», «Отправлено». Если это возможно, я не знаю об этом из моих исследований. В настоящее время я собираю все выполнено для N дни и отфильтровывать их сам
Конечная точка:
https://api.ebay.com/ws/api.dll
XML:
<?xml version='1.0' encoding='utf-8'?>
<GetOrdersRequest xmlns='urn:ebay:apis:eBLBaseComponents'>
<RequesterCredentials>
<eBayAuthToken>$requestToken</eBayAuthToken>
</RequesterCredentials>
<OrderRole>Seller</OrderRole>
<OrderStatus>Completed</OrderStatus>
<Pagination>
<EntriesPerPage>100</EntriesPerPage>
<PageNumber>$page</PageNumber>
</Pagination>
<NumberOfDays>7</NumberOfDays>
<ErrorLanguage>en_US</ErrorLanguage>
<Version>823</Version>
<WarningLevel>High</WarningLevel>
</GetOrdersRequest>
Логика сортировки:
foreach($orderArray as $order)
{
$paidTime = (isset($order['PaidTime']) ? $order['PaidTime'] : '');
$shippedTime = (isset($order['ShippedTime']) ? $order['ShippedTime'] : '');
if($paidTime != "" ){
if($shippedTime == "")
array_push($itemPaidNotShipped,$order);
else
array_push($itemPaidShipped,$order);
}else{
array_push($itemNotPaidNotShipped,$order);
}
}
Редактировать после принятого ответа, вот моя логика сортировки:
foreach($orderArray as $order){
$paidTime = (isset($order['PaidTime']) ? $order['PaidTime'] : '');
$shippedTime = (isset($order['ShippedTime']) ? $order['ShippedTime'] : '');
$orderStatus = (isset($order['OrderStatus']) ? $order['OrderStatus'] : '');
if($orderStatus != "" && $orderStatus != 'Cancelled'){
if($paidTime != "" ){
if($shippedTime == "")
array_push($itemPaidNotShipped,$order);
else
array_push($itemPaidShipped,$order);
}else{
array_push($itemNotPaidNotShipped,$order);
}
}
}
Я считаю OrderStatus из завершенных возвратов оплаченных заказов. Вы можете оставить OrderStatus, чтобы получать все заказы независимо от статуса, или запросить Active для получения неоплаченных заказов.
Если вы являетесь подписчиком Selling Manager Pro, вы можете использовать вызов GetSellingManagerSoldListings
http://developer.ebay.com/Devzone/xml/docs/Reference/ebay/GetSellingManagerSoldListings.html
Имеет поле фильтра
<Filter> SellingManagerSoldListingsPropertyTypeCodeType </Filter>
Вы можете найти значения здесь
http://developer.ebay.com/Devzone/xml/docs/Reference/ebay/extra/GtSllngMngrSldLstngsRqst.Fltr.html
Я использую вызов GetOrders; вызов GetSellingManagerSoldListings включает в себя следующее:
Примечание: этот вызов может быть изменен без предварительного уведомления; процесс устаревания неприменим к этому вызову.
Невозможно создать вызов, который вернул бы только определенный статус, такой как ожидание платежа, ожидание отправки или отправка, которую я смог найти. Похоже, вы идете в правильном направлении, собирая последние 7 дней, а затем пытаясь определить платный статус оттуда.
Чтобы определить платный статус, вам нужно проверить PaidTime, который может быть элементом в одном из 2 мест. Первый — это порядок (OrderArray.Order.PaidTime), а второй — транзакция (OrderArray.Order.TransactionArray.Transaction.PaidTime). PaidTime возвращается условно, что означает, что если он не оплачен, он не будет возвращен. Если вы анализируете PaidTime, и он не присутствует / не возвращается или возвращается, а стоимость не указана, товар считается не оплаченным / ожидающим оплаты. Если есть время, платеж получен и будет считаться оплаченным.