eBay FindingAPI - findItemsByProduct возвращает ошибку «Недопустимое значение идентификатора продукта» для сайта EBAY-US - PullRequest
0 голосов
/ 14 марта 2012

Я пытаюсь интегрировать eBay API в мой проект.Я использую ZendFramework и есть библиотека для eBay FindingAPI, но она не работает для метода findItemsByProduct.

Для понимания проблемы я написал свой небольшой класс:

<?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(
            'productId.@type' => $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 по-прежнему возвращает ошибку

Неверное значение идентификатора продукта.

Я пробовал разные варианты передачи значения, но это не работает :(Текущая версия передаваемого значения я видел здесь: как использовать python xml.etree.ElementTree для анализа ответа eBay API?

Использование:

<?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"]}]}

Важно! Если я, например, поменяю GLOBAL-ID на EBAY-DE, все в порядке! Что не так с EBAY-US?!

Ответы [ 2 ]

1 голос
/ 10 июля 2012

Похоже, что вы передали неправильный идентификатор продукта (itemID вместо ProductID).$ EBay-> findByProduct ( '4719331316129');- 13 цифр, когда обычно ProductId имеет 8-9 цифр. Сравнить:

<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>
0 голосов
/ 23 ноября 2017

Идентификатор, который вы отправляете, обрабатывается как UPC продукта.

Для findItemsByProduct требуется идентификатор продукта.

тип должен быть указан при передаче идентификатора продукта.Тип может включать ISBN, UPC, EAN или ReferenceID (ePID).

В вашем случае передаваемый вами ID считается номером UPC.Поэтому убедитесь, что UPC подходит для этого продукта.

...