This repository was archived by the owner on Feb 25, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 101
/
Copy path04-find-items-by-product-with-item-filters.php
159 lines (139 loc) · 4.39 KB
/
04-find-items-by-product-with-item-filters.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?php
/**
* Copyright 2016 David T. Sadler
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Include the SDK by using the autoloader from Composer.
*/
require __DIR__.'/../vendor/autoload.php';
/**
* Include the configuration values.
*
* Ensure that you have edited the configuration.php file
* to include your application keys.
*/
$config = require __DIR__.'/../configuration.php';
/**
* The namespaces provided by the SDK.
*/
use \DTS\eBaySDK\Constants;
use \DTS\eBaySDK\Finding\Services;
use \DTS\eBaySDK\Finding\Types;
use \DTS\eBaySDK\Finding\Enums;
/**
* Create the service object.
*/
$service = new Services\FindingService([
'credentials' => $config['production']['credentials'],
'globalId' => Constants\GlobalIds::US
]);
/**
* Create the request object.
*/
$request = new Types\FindItemsByProductRequest();
/**
* Assign the product ID that we want to search for.
* This example will use a UPC as a product ID.
* NOTE: eBay only allow a UPC value for products in the Music (e.g. CDs), DVD and Movie, and Video Game categories.
* Using a UPC value for any other product will result in no items been returned.
*/
$productId = new Types\ProductId();
$productId->value = '085392246724';
$productId->type = 'UPC';
$request->productId = $productId;
/**
* Filter results to only include auction items or auctions with buy it now.
*/
$itemFilter = new Types\ItemFilter();
$itemFilter->name = 'ListingType';
$itemFilter->value[] = 'Auction';
$itemFilter->value[] = 'AuctionWithBIN';
$request->itemFilter[] = $itemFilter;
/**
* Add additional filters to only include items that fall in the price range of $1 to $10.
*
* Notice that we can take advantage of the fact that the SDK allows object properties to be assigned via the class constructor.
*/
$request->itemFilter[] = new Types\ItemFilter([
'name' => 'MinPrice',
'value' => ['1.00']
]);
$request->itemFilter[] = new Types\ItemFilter([
'name' => 'MaxPrice',
'value' => ['10.00']
]);
/**
* Sort the results by current price.
*/
$request->sortOrder = 'CurrentPriceHighest';
/**
* Limit the results to 10 items per page and start at page 1.
*/
$request->paginationInput = new Types\PaginationInput();
$request->paginationInput->entriesPerPage = 10;
$request->paginationInput->pageNumber = 1;
/**
* Send the request.
*/
$response = $service->findItemsByProduct($request);
if (isset($response->errorMessage)) {
foreach ($response->errorMessage->error as $error) {
printf(
"%s: %s\n\n",
$error->severity=== Enums\ErrorSeverity::C_ERROR ? 'Error' : 'Warning',
$error->message
);
}
}
/**
* Output the result of the search.
*/
printf(
"%s items found over %s pages.\n\n",
$response->paginationOutput->totalEntries,
$response->paginationOutput->totalPages
);
echo "==================\nResults for page 1\n==================\n";
if ($response->ack !== 'Failure') {
foreach ($response->searchResult->item as $item) {
printf(
"(%s) %s: %s %.2f\n",
$item->itemId,
$item->title,
$item->sellingStatus->currentPrice->currencyId,
$item->sellingStatus->currentPrice->value
);
}
}
/**
* Paginate through 2 more pages worth of results.
*/
$limit = min($response->paginationOutput->totalPages, 3);
for ($pageNum = 2; $pageNum <= $limit; $pageNum++) {
$request->paginationInput->pageNumber = $pageNum;
$response = $service->findItemsByProduct($request);
echo "==================\nResults for page $pageNum\n==================\n";
if ($response->ack !== 'Failure') {
foreach ($response->searchResult->item as $item) {
printf(
"(%s) %s: %s %.2f\n",
$item->itemId,
$item->title,
$item->sellingStatus->currentPrice->currencyId,
$item->sellingStatus->currentPrice->value
);
}
}
}