2015-04-06 53 views
0

這是我打入ebay的XML。除了沒有付款完成的項目(我已閱讀我應該回來),我會獲得所有已完成的項目。eBay API GetOrdersRequest未顯示正在等待支付的項目

我寧願有一個方法,只叫「等待付款」,「等待航運」,「發貨」。如果這是可能的,我不知道從我的研究。目前,我正在收集所有完成ñ天和過濾出來自己

端點:

https://api.ebay.com/ws/api.dll 

XML:

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); 
    } 
    } 
:在整理

<?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'] : ''); 
    $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); 
     } 
    } 
    } 
+0

那麼問題是什麼? –

+1

問題是,文檔說我應該得到AwaitingPayment,而我不是。所以無論我做錯了什麼,或者我該如何做到這一點? – Andrew

回答

3

我相信OrderStatus完成退貨支付訂單。您可以省略OrderStatus以接收所有訂單,而不考慮狀態或請求激活以獲取未付訂單。

如果你是一個銷售經理專業版的用戶,可以使用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調用包括以下內容:

注意:此調用如有更改,恕不另行通知;棄用過程不適用於此調用。

+0

就是這樣,它現在也退回已取消。所以我只是要過濾掉這些(因爲我不需要它們)。非常感謝! – Andrew

0

有沒有方法來創建一個電話,將只返回像等待付款,等待裝運特定的狀態,或運,我已經能夠找。這聽起來像你正在朝着正確的方向前進7天,然後試圖從那裏確定付費狀態。

爲了確定付費狀態,您需要檢查PaidTime,它可以是2個位置之一的元素。第一個是order(OrderArray.Order.PaidTime),第二個是事務(OrderArray.Order.TransactionArray.Transaction.PaidTime)。 PaidTime是有條件返回的,這意味着如果它沒有支付,它將不會被退回。如果您解析PaidTime並且它不存在/未返回或返回並且沒有值,則該項目被視爲未付款/等待付款。如果出現時間,則已收到付款並將被視爲已付款。

+0

我根本沒有回覆那些條目和我的查詢。如果我是過濾器,我的過濾器會將它們扔到「其他」中,而我在任何地方都看不到它們。 – Andrew