如何根据商品ID获取ebay商品网址

时间:2016-10-24 13:06:28

标签: php ebay ebay-api

我想根据商品ID获取商品网址。搜索之后,我发现我可以使用" GetSingleItem"实现我的目标。但是,我收到了一个错误:

  

eBay返回以下错误:   2:不支持的API调用。   API调用" GetSingleItem"在此版本中无效或不受支持。

这是我的代码(所有配置都是正确的,因为我可以使用" GetOrders"使用这些配置):

$subverb = "GetSingleItem";

$requestXmlBody = '<?xml version="1.0" encoding="utf-8" ?>';
$requestXmlBody .= '<GetSingleItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">';
$requestXmlBody .= "<ItemID>111986554711</ItemID>";
$requestXmlBody .= '</GetSingleItemRequest>';

//Create a new eBay session with all details pulled in from included keys.php
$session = new eBaySession($userToken, $devID, $appID, $certID, $serverUrl, $compatabilityLevel, $siteID, $subverb);

//send the request and get response
$responseXml = $session->sendHttpRequest($requestXmlBody);
if (stristr($responseXml, 'HTTP 404') || $responseXml == '')
     die('<P>Error sending request');

//Xml string is parsed and creates a DOM Document object
$responseDoc = new DomDocument();
$responseDoc->loadXML($responseXml);

//get any error nodes
$errors = $responseDoc->getElementsByTagName('Errors');
$response = simplexml_import_dom($responseDoc);
$entries = $response->PaginationResult->TotalNumberOfEntries;

//if there are error nodes
if ($errors->length > 0) {
   echo '<P><B>eBay returned the following error(s):</B>';
   //display each error
   //Get error code, ShortMesaage and LongMessage
   $code = $errors->item(0)->getElementsByTagName('ErrorCode');
   $shortMsg = $errors->item(0)->getElementsByTagName('ShortMessage');
   $longMsg = $errors->item(0)->getElementsByTagName('LongMessage');

   //Display code and shortmessage
   echo '<P>', $code->item(0)->nodeValue, ' : ', str_replace(">", "&gt;", str_replace("<", "&lt;", $shortMsg->item(0)->nodeValue));

   //if there is a long message (ie ErrorLevel=1), display it
   if (count($longMsg) > 0)
       echo '<BR>', str_replace(">", "&gt;", str_replace("<", "&lt;", $longMsg->item(0)->nodeValue));
   } else { //If there are no errors, continue
      if (isset($_GET['debug'])) {
         header("Content-type: text/xml");
         print_r($responseXml);
      } else {
         print("\n; 111986554711: " . $response->Item->ViewItemURLForNaturalSearch);
      }
   }

有什么建议吗?谢谢。

2 个答案:

答案 0 :(得分:1)

正如您所发现的,您不需要API来构建简单的易趣视图项目着陆页网址。

您发现的网址格式有效,但它已经很老了,可能不会全部或长时间支持。

这是一个非常新的简单网址格式,您可以使用:

http://www.ebay.com/itm/122225724269

答案 1 :(得分:0)

我没有使用api就得到了答案。答案是这样的:在我获得物品ID后,我可以使用"http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=".$item_id在易趣上展示我的产品。

我使用GetOrders API找到了这个uri。

  

OrderArray.Order .TransactionArray.Transaction .Variation .VariationViewItemURL

     

提示:“未针对自然搜索进行优化”

如果有人对“GetSingleItem”有任何想法,我很想知道为什么我的代码不起作用。