Reputation: 1095
I am using the eBay SDK for PHP at devbay.net.
First I am loading GetSellingManagerSoldListings, searching for SaleRecordID=129317:
$service = new TradingService();
$request = new Types\GetSellingManagerSoldListingsRequestType();
$request->Search = new Types\SellingManagerSearchType();
$request->Search->SearchType = 'SaleRecordID';
$request->Search->SearchValue = '129317';
$result = $service->GetSellingManagerSoldListings($request);
print_r($result->SaleRecord[0]);
Which gives the following response:
DTS\eBaySDK\Trading\Types\SellingManagerSoldOrderType Object
(
[values:DTS\eBaySDK\Types\BaseType:private] => Array
(
[SellingManagerSoldTransaction] => DTS\eBaySDK\Types\UnboundType Object
(
[data:DTS\eBaySDK\Types\UnboundType:private] => Array
(
[0] => DTS\eBaySDK\Trading\Types\SellingManagerSoldTransactionType Object
(
[values:DTS\eBaySDK\Types\BaseType:private] => Array
(
[TransactionID] => *removed*
[SaleRecordID] => 129242
[ItemID] => *removed*
[QuantitySold] => 1
[ItemTitle] => *removed*
[ListingType] => FixedPriceItem
[Relisted] =>
[SecondChanceOfferSent] =>
[CustomLabel] => *removed*
[SoldOn] => eBay
[ListedOn] => DTS\eBaySDK\Types\UnboundType Object
(
[data:DTS\eBaySDK\Types\UnboundType:private] => Array
(
[0] => eBay
)
[position:DTS\eBaySDK\Types\UnboundType:private] => 0
[class:DTS\eBaySDK\Types\UnboundType:private] => DTS\eBaySDK\Trading\Types\SellingManagerSoldTransactionType
[property:DTS\eBaySDK\Types\UnboundType:private] => ListedOn
[expectedType:DTS\eBaySDK\Types\UnboundType:private] => string
)
[CharityListing] =>
[OrderLineItemID] => *removed*
)
[attachment:DTS\eBaySDK\Types\BaseType:private] => Array
(
[data] =>
[mimeType] =>
)
)
[1] => DTS\eBaySDK\Trading\Types\SellingManagerSoldTransactionType Object
(
[values:DTS\eBaySDK\Types\BaseType:private] => Array
(
[TransactionID] => *removed*
[SaleRecordID] => 129243
[ItemID] => *removed*
[QuantitySold] => 1
[ItemTitle] => *removed*
[ListingType] => FixedPriceItem
[Relisted] =>
[SecondChanceOfferSent] =>
[CustomLabel] => *removed*
[SoldOn] => eBay
[ListedOn] => DTS\eBaySDK\Types\UnboundType Object
(
[data:DTS\eBaySDK\Types\UnboundType:private] => Array
(
[0] => eBay
)
[position:DTS\eBaySDK\Types\UnboundType:private] => 0
[class:DTS\eBaySDK\Types\UnboundType:private] => DTS\eBaySDK\Trading\Types\SellingManagerSoldTransactionType
[property:DTS\eBaySDK\Types\UnboundType:private] => ListedOn
[expectedType:DTS\eBaySDK\Types\UnboundType:private] => string
)
[CharityListing] =>
[OrderLineItemID] => *removed*
)
[attachment:DTS\eBaySDK\Types\BaseType:private] => Array
(
[data] =>
[mimeType] =>
)
)
)
[position:DTS\eBaySDK\Types\UnboundType:private] => 0
[class:DTS\eBaySDK\Types\UnboundType:private] => DTS\eBaySDK\Trading\Types\SellingManagerSoldOrderType
[property:DTS\eBaySDK\Types\UnboundType:private] => SellingManagerSoldTransaction
[expectedType:DTS\eBaySDK\Types\UnboundType:private] => DTS\eBaySDK\Trading\Types\SellingManagerSoldTransactionType
)
[ShippingAddress] => DTS\eBaySDK\Trading\Types\AddressType Object
(
[values:DTS\eBaySDK\Types\BaseType:private] => Array
(
[Name] => *removed*
[PostalCode] => 2761
)
[attachment:DTS\eBaySDK\Types\BaseType:private] => Array
(
[data] =>
[mimeType] =>
)
)
[ShippingDetails] => DTS\eBaySDK\Trading\Types\ShippingDetailsType Object
(
[values:DTS\eBaySDK\Types\BaseType:private] => Array
(
[ShippingType] => NotSpecified
)
[attachment:DTS\eBaySDK\Types\BaseType:private] => Array
(
[data] =>
[mimeType] =>
)
)
[TotalAmount] => DTS\eBaySDK\Trading\Types\AmountType Object
(
[values:DTS\eBaySDK\Types\BaseType:private] => Array
(
[currencyID] => AUD
[value] => 294.95
)
[attachment:DTS\eBaySDK\Types\BaseType:private] => Array
(
[data] =>
[mimeType] =>
)
)
[TotalQuantity] => 2
[ActualShippingCost] => DTS\eBaySDK\Trading\Types\AmountType Object
(
[values:DTS\eBaySDK\Types\BaseType:private] => Array
(
[currencyID] => AUD
[value] => 0
)
[attachment:DTS\eBaySDK\Types\BaseType:private] => Array
(
[data] =>
[mimeType] =>
)
)
[OrderStatus] => DTS\eBaySDK\Trading\Types\SellingManagerOrderStatusType Object
(
[values:DTS\eBaySDK\Types\BaseType:private] => Array
(
[CheckoutStatus] => CheckoutComplete
[PaidStatus] => PartiallyPaid
[ShippedStatus] => Shipped
[PaymentMethodUsed] => PayPal
[FeedbackSent] => 1
[TotalEmailsSent] => 3
[ShippedTime] => DateTime Object
(
[date] => 2015-04-06 21:10:09
[timezone_type] => 2
[timezone] => Z
)
)
[attachment:DTS\eBaySDK\Types\BaseType:private] => Array
(
[data] =>
[mimeType] =>
)
)
[SalePrice] => DTS\eBaySDK\Trading\Types\AmountType Object
(
[values:DTS\eBaySDK\Types\BaseType:private] => Array
(
[currencyID] => AUD
[value] => 589.9
)
[attachment:DTS\eBaySDK\Types\BaseType:private] => Array
(
[data] =>
[mimeType] =>
)
)
[DaysSinceSale] => 5
[BuyerID] => *removed*
[BuyerEmail] => *removed*
[SaleRecordID] => 129317
[CreationTime] => DateTime Object
(
[date] => 2015-04-03 10:19:48
[timezone_type] => 2
[timezone] => Z
)
)
[attachment:DTS\eBaySDK\Types\BaseType:private] => Array
(
[data] =>
[mimeType] =>
)
)
Next I want to load the related GetSellingManagerSaleRecord. The problem is I cannot find a combination of IDs that will load the correct record. Here are my attempts:
loads wrong result, SalesRecordID=129242 .. I need 129317:
$service = new TradingService();
$request = new Types\GetSellingManagerSaleRecordRequestType();
$request->OrderLineItemID = $result->SaleRecord[0]->SellingManagerSoldTransaction[0]->OrderLineItemID;
$result2 = $service->GetSellingManagerSaleRecord($request);
loads wrong result, SalesRecordID=129243 .. I need 129317:
$service = new TradingService();
$request = new Types\GetSellingManagerSaleRecordRequestType();
$request->OrderLineItemID = $result->SaleRecord[0]->SellingManagerSoldTransaction[1]->OrderLineItemID;
$result2 = $service->GetSellingManagerSaleRecord($request);
ErrorCode 21916340, Sale record doesnt exist:
$service = new TradingService();
$request = new Types\GetSellingManagerSaleRecordRequestType();
$transaction = $result->SaleRecord[0]->SellingManagerSoldTransaction[0];
$request->OrderLineItemID = $transaction->ItemID . '-' . $transaction->TransactionID;
$result2 = $service->GetSellingManagerSaleRecord($request);
ErrorCode 21916340, Sale record doesnt exist:
$service = new TradingService();
$request = new Types\GetSellingManagerSaleRecordRequestType();
$request->OrderID = $result->SaleRecord[0]->SaleRecordID;
$result2 = $service->GetSellingManagerSaleRecord($request);
ErrorCode 21916340, Sale record doesnt exist:
$service = new TradingService();
$request = new Types\GetSellingManagerSaleRecordRequestType();
$transaction = $result->SaleRecord[0]->SellingManagerSoldTransaction[0];
$request->ItemID = $transaction->ItemID;
$request->TransactionID = $transaction->TransactionID;
$result2 = $service->GetSellingManagerSaleRecord($request);
Upvotes: 2
Views: 598
Reputation:
I'm not to familiar with the after sales side of the eBay API but depending on what you are trying to achieve the following may work.
Since GetSellingManagerSaleRecord won't allow you to pass a known SaleRecordID you can send it an OrderID instead. As each SaleRecord has an associated Order you can get it's ID by using GetOrders.
$service = new TradingService();
$request = new Types\GetSellingManagerSoldListingsRequestType();
$request->Search = new Types\SellingManagerSearchType();
$request->Search->SearchType = 'SaleRecordID';
$request->Search->SearchValue = '129317';
$response = $service->GetSellingManagerSoldListings($request);
/**
* Get the OrderLineItemID of the first transaction in the Sale Record.
* This would work as well as all the transactions will come from the same order.
* $orderLineItemID = $response->SaleRecord[0]->SellingManagerSoldTransaction[1]->OrderLineItemID;
*/
$orderLineItemID = $response->SaleRecord[0]->SellingManagerSoldTransaction[0]->OrderLineItemID;
/**
* Now look up the order.
*/
$request = new Types\GetOrdersRequestType();
$request->OrderIDArray = new Types\OrderIDArrayType();
$request->OrderIDArray->OrderID[] = $orderLineItemID;
$response = $service->getOrders($request);
$orderID = $response->OrderArray->Order[0]->OrderID;
/**
* Now use the OrderID to call GetSellingManagerSaleRecord.
*/
$request = new Types\GetSellingManagerSaleRecordRequestType();
$request->OrderID = $orderID;
$response = $service->getSellingManagerSaleRecord($request);
/**
* Check we got the correct SaleRecord.
*/
$saleRecordID = $response->SellingManagerSoldOrder->SaleRecordID;
assert('$saleRecordID === 129317');
In addition to calling GetSellingManagerSoldListings you can also call GetOrders to obtain a list of SaleRecordIDs. For example:
$request = new Types\GetOrdersRequestType();
$request->NumberOfDays = 30;
$response = $service->getOrders($request);
foreach ($response->OrderArray->Order as $order) {
printf("SaleRecordID %s\n", $order->ShippingDetails->SellingManagerSalesRecordNumber);
}
Upvotes: 3