Blame | Last modification | View Log | RSS feed
<?phpini_set('include_path', ini_get('include_path') . ':.:../ebay/php');require_once ('keys.php');require_once ('eBaySession.php');// Generates an indexed URL snippet from the array of item filtersfunction buildURLArray($filterarray){$urlfilter = '';$i = '0';// Iterate through each filter in the arrayforeach($filterarray as $itemfilter) {// Iterate through each key in the filterforeach($itemfilter as $key => $value) {if (is_array($value)) {foreach($value as $j => $content) { // Index the key for each value$urlfilter.= "&itemFilter($i).$key($j)=$content";}}else {if ($value != "") {$urlfilter.= "&itemFilter($i).$key=$value";}}}$i++;}return "$urlfilter";} // End of buildURLArray functionfunction eBayProductAdjust($query, $quantitySold){global $seller;global $findUrl;global $findVersion;global $app;$result = '';$resultFlag = true;// API request variables$safequery = urlencode($query); // Make the query URL-friendly// Create a PHP array of the item filters you want to use in your request$filterarray = array(array('name' => 'Seller','value' => $seller) ,);// Build the indexed item filter URL snippet$urlfilter = buildURLArray($filterarray);// Construct the findItemsByKeywords HTTP GET call$apicall = "$findUrl";$apicall.= "?OPERATION-NAME=findItemsByKeywords";$apicall.= "&SERVICE-VERSION=$findVersion";$apicall.= "&SECURITY-APPNAME=$app";$apicall.= "&GLOBAL-ID=EBAY-US";$apicall.= "&keywords=$safequery";$apicall.= "&paginationInput.entriesPerPage=1";$apicall.= "$urlfilter";// Load the call and capture the document returned by eBay API$resp = simplexml_load_file($apicall);// Check to see if the request was successful, else print an errorif ($resp->ack == "Success") {$results = '';if ($resp->paginationOutput->totalEntries == 1) {$quantityAvailable = intval(getSingleItemResults($resp->searchResult->item->itemId));$quantityRemaining = $quantityAvailable - $quantitySold;if ($quantityRemaining > 0) {$result = reviseItem($resp->searchResult->item->itemId, $quantityRemaining);}else {$result = endItem($resp->searchResult->item->itemId);}}else {$result = "Couldn't adjust, found " . $resp->paginationOutput->totalEntries . " results.";}}else {$result = "Couldn't adjust, findItemsByKeywords call failed.";}$resultFlag = !strpos($result, 'Couldn\'t');return array($resultFlag, $result);}// GetSingleItem call to determine available quantityfunction getSingleItemResults($selectedItemID){global $shopUrl;global $shopVersion;global $app;global $compatibilityLevel;// Construct the GetSingleItem call$apicallb = "$shopUrl";$apicallb.= "?callname=GetSingleItem";$apicallb.= "&version=$shopVersion";$apicallb.= "&appid=$app";$apicallb.= "&itemid=$selectedItemID";$apicallb.= "&responseencoding=XML";$apicallb.= "&includeselector=Details";// Load the call and capture the document returned by eBay API$resp = simplexml_load_file($apicallb);// Check to see if the response was loadedif ($resp) {return ($resp->Item->Quantity - $resp->Item->QuantitySold);}return "0";} // End of getSingleItemResults functionfunction reviseItem($id, $newQuantity){global $token;global $dev;global $app;global $cert;global $gatewayUrl;global $compatabilityLevel;// Build the request Xml string$requestXmlBody = '<?xml version="1.0" encoding="utf-8" ?>';$requestXmlBody.= '<ReviseItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">';$requestXmlBody.= "<RequesterCredentials><eBayAuthToken>$token</eBayAuthToken></RequesterCredentials>";$requestXmlBody.= "<Item>";$requestXmlBody.= "<ItemID>$id</ItemID>";$requestXmlBody.= "<Quantity>$newQuantity</Quantity>";$requestXmlBody.= "</Item>";$requestXmlBody.= '</ReviseItemRequest>';// Create a new eBay session with all details pulled in from included keys.php$session = new eBaySession($token, $dev, $app, $cert, $gatewayUrl, $compatabilityLevel, 0, 'ReviseItem');// send the request and get response$responseXml = $session->sendHttpRequest($requestXmlBody);if (stristr($responseXml, 'HTTP 404') || $responseXml == '') return "Couldn't adjust quantity for Id $id, reviseItem call failed.";// Xml string is parsed and creates a DOM Document object$responseDoc = new DomDocument();$responseDoc->loadXML($responseXml);// get any error nodes$errors = $responseDoc->getElementsByTagName('Errors');// if there are error nodesif ($errors->length > 0){$code = $errors->item(0)->getElementsByTagName('ErrorCode');$shortMsg = $errors->item(0)->getElementsByTagName('ShortMessage');error_log("reviseItem: " . $code->item(0)->nodeValue . " - " . $shortMsg->item(0)->nodeValue);return "Couldn't adjust quantity for Id $id, reviseItem call failed.";}else {return "Quantity for Id $id is now $newQuantity.";}}function endItem($id){global $token;global $dev;global $app;global $cert;global $gatewayUrl;global $compatabilityLevel;// Build the request Xml string$requestXmlBody = '<?xml version="1.0" encoding="utf-8" ?>';$requestXmlBody.= '<EndItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">';$requestXmlBody.= "<RequesterCredentials><eBayAuthToken>$token</eBayAuthToken></RequesterCredentials>";$requestXmlBody.= "<EndingReason>NotAvailable</EndingReason>";$requestXmlBody.= "<ItemID>$id</ItemID>";$requestXmlBody.= '</EndItemRequest>';// Create a new eBay session with all details pulled in from included keys.php$session = new eBaySession($token, $dev, $app, $cert, $gatewayUrl, $compatabilityLevel, 0, 'EndItem');// send the request and get response$responseXml = $session->sendHttpRequest($requestXmlBody);if (stristr($responseXml, 'HTTP 404') || $responseXml == '') return "Couldn't end Id $id, endItem call failed.";// Xml string is parsed and creates a DOM Document object$responseDoc = new DomDocument();$responseDoc->loadXML($responseXml);// get any error nodes$errors = $responseDoc->getElementsByTagName('Errors');// if there are error nodesif ($errors->length > 0){$code = $errors->item(0)->getElementsByTagName('ErrorCode');if ($code == "1047") { // auction already closed$response2 = addNote($id);return "Id $id already ended. $response2";} else {$shortMsg = $errors->item(0)->getElementsByTagName('ShortMessage');error_log("endItem: " . $code->item(0)->nodeValue . " - " . $shortMsg->item(0)->nodeValue);return "Couldn't end Id $id, endItem call failed.";}}else { //no errors$response2 = addNote($id);return "Id $id ended. $response2";}}function addNote($id){global $token;global $dev;global $app;global $cert;global $gatewayUrl;global $compatabilityLevel;// Build the request Xml string$requestXmlBody = '<?xml version="1.0" encoding="utf-8"?>';$requestXmlBody .= '<SetUserNotesRequest xmlns="urn:ebay:apis:eBLBaseComponents">';$requestXmlBody .= "<RequesterCredentials><eBayAuthToken>$token</eBayAuthToken></RequesterCredentials>";$requestXmlBody .= "<ItemID>$id</ItemID>";$requestXmlBody .= "<Action>AddOrUpdate</Action>";$requestXmlBody .= "<NoteText>Sold via Shopify on " . date('Y-m-d') . ".</NoteText>";$requestXmlBody .= "</SetUserNotesRequest>";// Create a new eBay session with all details pulled in from included keys.php$session = new eBaySession($token, $dev, $app, $cert, $gatewayUrl, $compatabilityLevel, 0, 'SetUserNotes');// send the request and get response$responseXml = $session->sendHttpRequest($requestXmlBody);if (stristr($responseXml, 'HTTP 404') || $responseXml == '') return "Couldn't add note for Id $id, setUserNotes call failed.";// Xml string is parsed and creates a DOM Document object$responseDoc = new DomDocument();$responseDoc->loadXML($responseXml);// get any error nodes$errors = $responseDoc->getElementsByTagName('Errors');// if there are error nodesif ($errors->length > 0){$code = $errors->item(0)->getElementsByTagName('ErrorCode');$shortMsg = $errors->item(0)->getElementsByTagName('ShortMessage');error_log("setUserNotes: " . $code->item(0)->nodeValue . " - " . $shortMsg->item(0)->nodeValue);return "Couldn't add note for Id $id, setUserNotes call failed.";}else { //no errorsreturn "Note added for Id $id.";}}?>