Rev 27 | Rev 39 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phpinclude_once('php/constants.php');error_reporting(E_ALL);// Get CJ Affiliate listingsfunction get_cjaffiliate($query, $searchType) {$vendors = Vendors::getInstance();$config = $vendors->getVendor(Vendors::CJAFFILIATE);// API request variables$query = '+' . str_replace(" ", " +", $query); // enforce 'and' logic$safequery = urlencode($query);$numResults = $config['numResults'];$numResultsMid = $config['numResultsMid'];$resultsMid = [];// Construct the findItemsByKeywords HTTP GET call$url = "https://product-search.api.cj.com/v2/product-search";$url .= "?website-id=" . $config['websiteId'];if (in_array($_SESSION["barcode"]["Type"], array("UPC","EAN","ISBN"))) {$url .= "&upc=";} else {$url .= "&keywords=";}$url .= $safequery;$url .= "&records-per-page=" . $numResults;$url .= "&page-number=1";$url .= "&sort-by=price";$url .= "&sort-order=asc";$url .= "&advertiser-ids=" . $config['advertiserIds'];$header = array('Content-Type: application/x-www-form-urlencoded','Accept: application/xml','Accept-Language: en-US,en;q=0.5','Accept-Charset: UTF-8,*;q=0.5','Authorization: ' . $config['personalAccessToken']);$ch = curl_init();curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_ENCODING, "gzip,deflate");curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_AUTOREFERER, true);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$result = curl_exec ($ch);$result = utf8_encode($result);$result = simplexml_load_string($result);curl_close($ch);//echo "$url<pre>";print_r($result);echo "</pre>";$arr = [];// Check to see if the request found any resultsif (isset($result->products['total-matched'])) {// If the response was loaded, parse it and store in arrayforeach ($result->{'products'}->{'product'} as $product) {$barcode = (string)$product->{'upc'};$barcodeType = clsLibGTIN::GTINCheck($barcode, false, 1);// approved: ArkivMusic(1111879), Secondspin(4926671), Sheet Music Plus(1595844)// pending: FYE(4911961)// declined: Barnes & Noble, Booksamillion, OnBuy.com$merchantId = strval($product->{'advertiser-id'});$merchantName = (string)$product->{'advertiser-name'};$title = (string)$product->{'name'};$pic = str_replace('http://', 'https://', (string)$product->{'image-url'});if (empty($pic)) {switch ($merchantId) {case 1111879: // ArkivMusic$pic = "images/no-image-available.jpg";break;default:continue;}}$url = str_replace('http://', 'https://', (string)$product->{'buy-url'});if (empty($url)) {continue;}switch ($merchantId) {case 4911961: // FYE.com$category = "CD";$freeShippingCap = 40.00;$handlingTime = 1;$shippingCost = 3.24;$shippingCurrency = 'USD';if (preg_match('/\d\d\d\d$/', $title)) {$type = 'Used';$condition = "Used";$title = rtrim(substr($title, 0, -4));} else {$type = 'New';$condition = "Brand New";}break;case 4926671: // Secondspin.com$freeShippingCap = 0.00;$handlingTime = 1;$shippingCost = 3.99;$shippingCurrency = 'USD';$type = 'Used';$condition = "Used";$category = "CD";break;case 1595844: // Sheet Music Plus$freeShippingCap = 35.00;$handlingTime = 1;$shippingCost = 3.99;$shippingCurrency = 'USD';$type = 'New';$condition = "Brand New";$category = "Book";break;case 1111879: // ArkivMusic$freeShippingCap = 0.00;$handlingTime = 1;$shippingCost = 2.99;$shippingCurrency = 'USD';$type = 'New';$condition = "Brand New";$category = "CD";break;default:$freeShippingCap = 0.00;$handlingTime = -1;$shippingCost = 0.00;$shippingCurrency = 'USD';$type = 'Used';$condition = "Used";$category = "CD";break;}$country = 'US';$bestOffer = false;$price = 0;if (!empty($product->{'price'}) && !empty($product->{'sale-price'})) {$price = minNotNull(array($product->{'price'}, $product->{'sale-price'}));} else if (!empty($product->{'price'})) {$price = $product->{'price'};} else if (!empty($product->{'sale-price'})) {$price = $product->{'sale-price'};}$price = number_format(floatval($price), 2, '.', '');if ($price <= "0.00") {continue;}$currency = 'USD';$timeLeft = 0;$listingType = 'Fixed';$location = 'US';$zip = '';$feedbackScore = -1;$feedbackPercent = -1;$sellerName = '';// bugbug//ls_cj_csv(array((string)$product->{'advertiser-name'},(string)$product->{'advertiser-category'},(string)$product->{'name'},(string)$product->{'description'},"'".$barcode,$barcodeType,minNotNull(array($product->{'price'},(string)$product->{'sale-price'})),(string)$product->{'buy-url'}));// this is last after all checks$resultsMid[] = $merchantId;if (array_count_values($resultsMid)[$merchantId] > $numResultsMid) {continue;}$arr[] = array("Merchant" => $merchantName,"Type" => "$type","Title" => "$title","Barcode" => "$barcode","BarcodeType" => "$barcodeType","Image" => "$pic","URL" => "$url","Category" => "$category","Condition" => "$condition","Country" => "$country","BestOffer" => "$bestOffer","TimeLeft" => "$timeLeft","Price" => "$price","Currency" => "$currency","ListingType" => "$listingType","Location" => "$location","Zip" => "$zip","FeedbackScore" => "$feedbackScore","FeedbackPercent" => "$feedbackPercent","SellerName" => "$sellerName","HandlingTime" => "$handlingTime","ShippingCost" => "$shippingCost","ShippingCurrency" => "$shippingCurrency","FreeShippingCap" => "$freeShippingCap","Show" => true);}}// If the response does not indicate 'Success,' log an errorelse {error_log($url);if (isset($result->{'error-message'})) {error_log($result->{'error-message'});}}return $arr;}