2012-03-14 4 views
0

내 프로젝트에 eBay API를 통합하려고합니다. ZendFramework를 사용하고 eBay FindingAPI 용 라이브러리가 있지만 'findItemsByProduct'메소드에는 작동하지 않습니다. eBay Finding API - findItemsByProduct, PHP

이해의 문제에 대한 내 작은 클래스 썼다 ('. 잘못된 제품 ID 값')
<?php 
class MyProject_Model_Ebay 
{ 
    const FINDING_API_URL = 'http://svcs.ebay.com/services/search/FindingService/v1?'; 

    private $appId; 

    public function __construct($appId) 
    { 
     $this->appId = $appId; 
    } 

    public function findByProduct($id, $type = 'UPC') 
    { 
     $params = array(
      '[email protected]' => $type, 
      'productId' => $id, 
     ); 

     return $this->doApiRequest('findItemsByProduct', $params); 
    } 

    public function findByKeywords($keywords) 
    { 
     $params = array(
      'keywords' => $keywords, 
     ); 

     return $this->doApiRequest('findItemsByKeywords', $params); 
    } 


    private function doApiRequest($operationName, $payload) 
    { 

     $global = array(
      'OPERATION-NAME' => $operationName, 
      'SECURITY-APPNAME' => $this->appId, 
      'GLOBAL-ID' => 'EBAY-US', 
      'SERVICE-VERSION' => '1.0.0', 
      'MESSAGE-ENCODING' => 'UTF-8', 
      'RESPONSE-DATA-FORMAT' => 'JSON', 
     ); 

     $ret = file_get_contents(
      self::FINDING_API_URL . http_build_query($global) . '&REST-PAYLOAD&' . http_build_query($payload) 
     ); 

     return $ret; 
    } 

} 

방법 'findItemsByKeywords'

확인을 작동하지만, 'findItemsByProduct는'여전히 오류를 반환합니다. 나는 값을 전달의 다른 변종을 시도하지만, 내가 여기보고 값을 전달 :(현재 버전을 작동하지 않습니다 how to use python xml.etree.ElementTree to parse eBay API response?

사용법 :

<?php 
$eBay = new MyProject_Model_Ebay(
    'My-app-id' 
); 

$eBay->findByProduct('4719331316129'); 

응답 :

{"findItemsByProductResponse":[{"ack":["Failure"],"errorMessage":[{"error":[{"errorId":["41"],"domain":["Marketplace"],"severity":["Error"],"category":["Request"],"message":["Invalid product ID value."],"subdomain":["Search"],"parameter":["4719331316129"]}]}],"version":["1.11.1"],"timestamp":["2012-03-14T06:41:42.600Z"]}]} 

중요! 예를 들어 EBAY-DE에서 GLOBAL-ID가 변경된 경우 모든 것이 정상입니다! EBAY-US의 문제점은 무엇입니까?

답변

1

incorrecrec t 제품 ID (ProductID 대신 itemID). $ eBay-> findByProduct ('4719331316129'); - 13 자리, 일반적으로 제품 ID는 비교 8 ~ 9 개 숫자가있는 경우 : 당신이 보내는 이드 제품의 UPC로 취급되고있다

<item> 
    <itemId>230823026330</itemId> 
    <title>Apple iPhone 3G - 8GB - Black (AT&amp;T) Smartphone #26459</title> 
    <globalId>EBAY-US</globalId> 
    <primaryCategory> 
    <categoryId>9355</categoryId> 
    <categoryName>Cell Phones &amp; Smartphones</categoryName> 
    </primaryCategory> 
    <galleryURL>http://thumbs3.ebaystatic.com/pict/2308230263304040_1.jpg</galleryURL> 
    <viewItemURL>http://www.ebay.com/itm/Apple-iPhone-3G-8GB-Black-AT-T-Smartphone-26459-/230823026330?pt=Cell_Phones</viewItemURL> 
    <productId type="ReferenceID">101892398</productId> 
+1

사실,이 주제에 대해 의견을 말하기에는 너무 늦었습니다. 나는 위의 대답을 약간 혼란스럽게 생각합니다. 문제는 "UPC"코드를 사용하여 제품을 검색하는 것입니다. UPC 코드는 12 자리입니다. 그래서 질문은 "13"자릿수를 주었기 때문에 실제로 잘못된 자릿수를 보냈습니다. 그러나 위의 대답은 참조 ID 만 사용합니다. 사실, 참조 ID가 작동하는 것과 동일한 문제가 있습니다. 그러나 UPC 코드를 부여하면 "잘못된 제품 ID 값"이 발생합니다. 이 문제를 해결 했습니까? – user2533493

+0

@ user2533493 당신이 맞아, 나는이 순간을 눈치 채지 못했다. (EAN-13 - http://en.wikipedia.org/wiki/Universal_Product_Code - UPC를위한 슈퍼 세트이며 13 자리가있다 .UPC는 EAN-13으로 변환 될 수있다. 그러나 그 반대는 아닙니다). 내 앱에서이 문제를 어떻게 해결했는지 기억이 안납니다. –

+0

@DmitryMerkushin 앱에 손을 대면이 문제를 해결 한 방법에 대한 세부 정보를 공유하십시오. 나는 지금 같은 문제를 겪고있다. UPC/EAN 모두 작동하지 않습니다 ("잘못된 제품 ID 값")하지만 참조 ID가 작동합니다. 13 자리 숫자이므로 EAN이라고 생각합니다. 나는 EBAY-US와 EBAY-DE 모두 GLOBAL-ID로 이것을 시도했다. FWIW, 내가 시도한 바코드는 012000275270입니다. – toddlermenot

0

합니다.

findItemsByProduct

제품 ID를 통과하면서 지정해야한다 productId에

유형을 필요로한다. 유형에 ISBN, UPC, EAN 또는 참조 ID (ePID)가 포함될 수 있습니다.

귀하의 경우, 전달하는 ID는 UPC 번호로 간주됩니다. 따라서 UPC가 해당 제품에 적합한 지 확인하십시오.