-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy patheBaySession.php
106 lines (89 loc) · 3.51 KB
/
eBaySession.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
<?php
class eBaySession
{
private $requestToken;
private $devID;
private $appID;
private $certID;
private $serverUrl;
private $compatLevel;
private $siteID;
private $verb;
/** __construct
Constructor to make a new instance of eBaySession with the details needed to make a call
Input: $userRequestToken - the authentication token fir the user making the call
$developerID - Developer key obtained when registered at http://developer.ebay.com
$applicationID - Application key obtained when registered at http://developer.ebay.com
$certificateID - Certificate key obtained when registered at http://developer.ebay.com
$useTestServer - Boolean, if true then Sandbox server is used, otherwise production server is used
$compatabilityLevel - API version this is compatable with
$siteToUseID - the Id of the eBay site to associate the call iwht (0 = US, 2 = Canada, 3 = UK, ...)
$callName - The name of the call being made (e.g. 'GeteBayOfficialTime')
Output: Response string returned by the server
*/
public function __construct($userRequestToken, $developerID, $applicationID, $certificateID, $serverUrl,$compatabilityLevel, $siteToUseID, $callName){
$this->requestToken = $userRequestToken;
$this->devID = $developerID;
$this->appID = $applicationID;
$this->certID = $certificateID;
$this->compatLevel = $compatabilityLevel;
$this->siteID = $siteToUseID;
$this->verb = $callName;
$this->serverUrl = $serverUrl;
}
/** sendHttpRequest
Sends a HTTP request to the server for this session
Input: $requestBody
Output: The HTTP Response as a String
*/
public function sendHttpRequest($requestBody)
{
//build eBay headers using variables passed via constructor
$headers = $this->buildEbayHeaders();
//initialise a CURL session
$connection = curl_init();
//set the server we are using (could be Sandbox or Production server)
curl_setopt($connection, CURLOPT_URL, $this->serverUrl);
//stop CURL from verifying the peer's certificate
curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);
//set the headers using the array of headers
curl_setopt($connection, CURLOPT_HTTPHEADER, $headers);
//set method as POST
curl_setopt($connection, CURLOPT_POST, 1);
//set the XML body of the request
curl_setopt($connection, CURLOPT_POSTFIELDS, $requestBody);
//set it to return the transfer as a string from curl_exec
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
//Send the Request
$response = curl_exec($connection);
//close the connection
curl_close($connection);
//return the response
return $response;
}
/** buildEbayHeaders
Generates an array of string to be used as the headers for the HTTP request to eBay
Output: String Array of Headers applicable for this call
*/
private function buildEbayHeaders()
{
$headers = array (
//Regulates versioning of the XML interface for the API
'X-EBAY-API-COMPATIBILITY-LEVEL: ' . $this->compatLevel,
//set the keys
'X-EBAY-API-DEV-NAME: ' . $this->devID,
'X-EBAY-API-APP-NAME: ' . $this->appID,
'X-EBAY-API-CERT-NAME: ' . $this->certID,
//the name of the call we are requesting
'X-EBAY-API-CALL-NAME: ' . $this->verb,
//SiteID must also be set in the Request's XML
//SiteID = 0 (US) - UK = 3, Canada = 2, Australia = 15, ....
//SiteID Indicates the eBay site to associate the call with
'X-EBAY-API-SITEID: ' . $this->siteID,
'X-EBAY-API-IAF-TOKEN' . $this->requestToken
);
return $headers;
}
}
?>