2016-01-28 3 views
3

Я пытаюсь получить список всех текущих активных продуктов после того, как научиться и практиковать. Мне удалось собрать сценарий, в котором будет перечисляться информация, которая мне нужна, которая доступна для акций, и ску , Теперь проблема заключается в том, что мне нужно вручную вводить ebay-идентификатор с веб-сайта, но мне нужно автоматически вывести список активных списков ebay.Усовершенствования разработчика Ebay

Вот сценарий, который будет собирать информацию для одного продукта.

error_reporting(E_ALL); 
    ini_set('display_errors', '1'); 

    // Load configuration file 
    $sandbox = false; 
    $compat_level = 753; 
    $api_endpoint = $sandbox ? 'https://api.sandbox.ebay.com/ws/api.dll' : 'https://api.ebay.com/ws/api.dll'; 
    $dev_id = $sandbox ? " " : " "; 
    $app_id = $sandbox ? " " : " "; 
    $cert_id = $sandbox ? " " : " "; 
    $auth_token = $sandbox ? " " : " "; 


    $site_id = 3; 
    $call_name = 'GetItem'; 

    // Create headers to send with CURL request. 
    $headers = array 
    (
     'X-EBAY-API-COMPATIBILITY-LEVEL: ' . $compat_level, 
     'X-EBAY-API-DEV-NAME: ' . $dev_id, 
     'X-EBAY-API-APP-NAME: ' . $app_id, 
     'X-EBAY-API-CERT-NAME: ' . $cert_id, 
     'X-EBAY-API-CALL-NAME: ' . $call_name,   
     'X-EBAY-API-SITEID: ' . $site_id, 
    ); 

    // Generate XML request 
    $xml_request = "<?xml version=\"1.0\" encoding=\"utf-8\" ?> 
        <".$call_name."Request xmlns=\"urn:ebay:apis:eBLBaseComponents\"> 
         <RequesterCredentials> 
          <eBayAuthToken>" . $auth_token . "</eBayAuthToken> 
         </RequesterCredentials> 
         <DetailLevel>ReturnAll</DetailLevel> 
         <IncludeItemSpecifics>true</IncludeItemSpecifics> 
         <IncludeWatchCount>true</IncludeWatchCount> 
         <ItemID>191744777908</ItemID> 
        </".$call_name."Request>"; 

    // Send request to eBay and load response in $response 
    $connection = curl_init(); 
    curl_setopt($connection, CURLOPT_URL, $api_endpoint); 
    curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($connection, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($connection, CURLOPT_POST, 1); 
    curl_setopt($connection, CURLOPT_POSTFIELDS, $xml_request); 
    curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1); 
    $response = curl_exec($connection); 
    curl_close($connection); 

    // Create DOM object and load eBay response 
    $dom = new DOMDocument(); 
    $dom->loadXML($response); 

    // Parse data accordingly. 
    $ack = $dom->getElementsByTagName('Ack')->length > 0 ? $dom->getElementsByTagName('Ack')->item(0)->nodeValue : ''; 
    $eBay_official_time = $dom->getElementsByTagName('Timestamp')->length > 0 ? $dom->getElementsByTagName('Timestamp')->item(0)->nodeValue : ''; 
    //$current_price = $dom->getElementsByTagName('ConvertedCurrentPrice')->length > 0 ? $dom->getElementsByTagName('ConvertedCurrentPrice')->item(0)->nodeValue : ''; 
    //$description = $dom->getElementsByTagName('Description')->length > 0 ? $dom->getElementsByTagName('Description')->item(0)->nodeValue : ''; 
    $itemID = $dom->getElementsByTagName('ItemID')->length > 0 ? $dom->getElementsByTagName('ItemID')->item(0)->nodeValue : ''; 
    $customLabel = $dom->getElementsByTagName('SKU')->length > 0 ? $dom->getElementsByTagName('SKU')->item(0)->nodeValue : ''; 
    $quantity = $dom->getElementsByTagName('Quantity')->length > 0 ? $dom->getElementsByTagName('Quantity')->item(0)->nodeValue : ''; 
    $quantitySold = $dom->getElementsByTagName('QuantitySold')->length > 0 ? $dom->getElementsByTagName('QuantitySold')->item(0)->nodeValue : ''; 
    $quantityAvaliable = $quantity - $quantitySold; 

    echo "ItemID: ".$itemID."<br>"; 
    echo "sku: ".$customLabel."<br>"; 
    echo "quantity: ".$quantity."quantitySold: ".$quantitySold." quantityAvaliable:".$quantityAvaliable; 

Что я не могу представить, как я могу автоматически брать списки из своего магазина eBay. вместо необходимости индивидуально вводить идентификатор каждого элемента.

ответ

1

Это может использоваться, чтобы завладеть всеми вашими активными объявлениями на вашем eBay. Объяснить это в основном делает запрос на eBay в виде xml. Запрос xml скажет eBay, что вы после этого, eBay затем ответит соответствующей информацией в этом случае активными списками на вашей учетной записи eBay. Ваш ответ xml хранится в ответе var $.

error_reporting(E_ALL); 
      ini_set('display_errors', '1'); 

      // Load configuration file 
      $sandbox = false; 
      $compat_level = 753; 
      $api_endpoint = $sandbox ? 'https://api.sandbox.ebay.com/ws/api.dll' : 'https://api.ebay.com/ws/api.dll'; 
      $dev_id = $sandbox ? "" : ""; 
      $app_id = $sandbox ? "" : ""; 
      $cert_id = $sandbox ? "" : ""; 
      $auth_token = $sandbox ? "" : ""; 


      $site_id = 3; 

/** 
**Change your call name to the appropriate call you need to make so for example to get list of all active products on your ebay you can use GetMyEbaySelling 
** 
**/ 

      $call_name = 'GetMyeBaySelling'; 

      // Create headers to send with CURL request. 
      $headers = array 
      (
       'X-EBAY-API-COMPATIBILITY-LEVEL: ' . $compat_level, 
       'X-EBAY-API-DEV-NAME: ' . $dev_id, 
       'X-EBAY-API-APP-NAME: ' . $app_id, 
       'X-EBAY-API-CERT-NAME: ' . $cert_id, 
       'X-EBAY-API-CALL-NAME: ' . $call_name,   
       'X-EBAY-API-SITEID: ' . $site_id, 
      ); 

/** 
**XML request is what your telling ebay you need so this is the basic request to get hold of the active listings 
**just to note the listings would be in a var called response. 
**/ 

       $xml_request = "<?xml version=\"1.0\" encoding=\"utf-8\"?> 
          <GetMyeBaySellingRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\"> 
          <RequesterCredentials> 
          <eBayAuthToken>". $auth_token . "</eBayAuthToken> 
          </RequesterCredentials> 
          <Version>753</Version> 
          <ActiveList> 
          <Sort>TimeLeft</Sort> 
          <Pagination> 
          <EntriesPerPage>100</EntriesPerPage> 
          <PageNumber>1</PageNumber> 
          </Pagination> 
          </ActiveList> 
          </GetMyeBaySellingRequest>"; 

      // Send request to eBay and load response in $response 
      $connection = curl_init(); 
      curl_setopt($connection, CURLOPT_URL, $api_endpoint); 
      curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0); 
      curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0); 
      curl_setopt($connection, CURLOPT_HTTPHEADER, $headers); 
      curl_setopt($connection, CURLOPT_POST, 1); 
      curl_setopt($connection, CURLOPT_POSTFIELDS, $xml_request); 
      curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1); 
      $response = curl_exec($connection); 
      curl_close($connection); 

Это объясняется здесь http://developer.ebay.com/DevZone/XML/docs/Reference/eBay/GetMyeBaySelling.html

2

Вы используете API GetItem который вытягивает один элемент, вам необходимо изменить вызов GetMyeBaySelling

$xml_request = '<?xml version="1.0" encoding="utf-8" ?>'; 
$xml_request .= '<GetMyeBaySellingRequest xmlns="urn:ebay:apis:eBLBaseComponents">'; 
$xml_request .= '<ActiveList>'; 
$xml_request .= '<Sort>TimeLeft</Sort>'; 
$xml_request .= '<Pagination><EntriesPerPage>200</EntriesPerPage>'; 
$xml_request .= "<PageNumber>1</PageNumber>"; 
$xml_request .= '</Pagination>'; 
$xml_request .= '</ActiveList>'; 
$xml_request .= "<RequesterCredentials><eBayAuthToken>$auth_token</eBayAuthToken></RequesterCredentials>"; 
$xml_request .= '<WarningLevel>High</WarningLevel>'; 
$xml_request .= '</GetMyeBaySellingRequest>​'; 

Note1: Это только стартер для вас, это поможет вам страница 1 из ваших пунктов в вашем магазине вы можете сделать здесь 1 переменную, чтобы перебирать страницы "<PageNumber>1</PageNumber>";

Вы можете спросить, как вы должны знать, сколько у вас страниц? Ответ: вам не нужно знать, eBay даст вам количество страниц при загрузке первого. Узел вы будете искать это ActiveList->PaginationResult->TotalNumberOfPages Затем использовать что-то вроде этого цикл по страницам while ($PageNumber < $TotalNumberOfPages) {

Примечание 2: Вы также можете захотеть изменить код выше, назад к переменной, если вы хотите, чтобы соответствовать </".$call_name."Request>";, как вы были раньше. Но вам нужно будет изменить $call_name = 'GetItem'; к $call_name = 'GetMyeBaySelling';

Note3: Ваш идентификатор сайта является $site_id = 3;, если вы находитесь в США, вы можете захотеть изменить что к 1

Примечание4: Вы также можете изменить $compat_level = 753; до последней версии 951 trading api version page

Note5: Поскольку похоже, что вы просто заявляете API-интерфейс eBay, я могу также сказать вам, что вы используете Торговый API, и если вы решили использовать другой API, например API мерчандайзинга вам нужно будет изменить конечную точку, но конечная точка, которую вы сейчас установили, правильно настроена для getmyebaysell ing (endpoint docs are here)

Смежные вопросы