Я пытаюсь интегрировать API eBay в свой проект. Я использую ZendFramework и есть библиотека для eBay FindingAPI, но она не работает для метода findItemsByProduct.eBay FindingAPI - 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' метод работает Ok, но '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"]}]}
Внимание! Если я изменяю GLOBAL-ID на EBAY-DE, например, все в порядке! Что не так с EBAY-US ?!
На самом деле, это уже слишком поздно, чтобы сделать комментарий по этой теме. Я немного запутываю вышеуказанный ответ. Вопрос заключается в попытке поиска продуктов, используя код «UPC». Код UPC составляет 12 цифр. Итак, вопрос фактически дал неправильные цифры, потому что он дал цифры «13». Но в приведенном выше ответе просто используйте Reference ID. На самом деле, у меня такая же проблема, когда работает Reference ID. Но, если код UPC вызывает «Недопустимое значение идентификатора продукта». Вы решили эту проблему? – user2533493
@ user2533493 Вы правы, я не заметил этого момента (EAN-13 - http://en.wikipedia.org/wiki/Universal_Product_Code - является надмножеством для UPC и имеет 13 цифр. UPC может быть преобразован в EAN-13 , но не наоборот). Я не помню, как я решил эту проблему в своем приложении. –
@DmitryMerkushin Пожалуйста, поделитесь информацией о том, как вы решили эту проблему, когда у вас есть приложение. У меня такая же проблема прямо сейчас. Оба UPC/EAN не работают (говорит «Недопустимое значение идентификатора продукта»), но работает идентификатор ссылки. Я думаю, что это должен быть EAN, хотя это 13-значное число. Я пробовал это для EBAY-US & EBAY-DE как GLOBAL-ID. FWIW, штрих-код, который я пробовал, - 0016000275270 – toddlermenot