Статьи

Представляем eBay’s Trading API — Настройка

В этой серии руководств я расскажу вам о торговом API Ebay. Торговый API позволяет создавать приложения, которые можно использовать для продажи на Ebay. Вот несколько примеров того, что вы можете сделать с помощью API:

  • получить информацию о магазине
  • обновить настройки магазина
  • добавить товары в определенный магазин eBay
  • списки конечных продуктов
  • обновить цену продукта
  • получить информацию о продукте

В этом руководстве мы создадим приложение, которое позволит пользователям создавать продукт на eBay с помощью API.

Зарегистрировать приложение

Первое, что вам нужно сделать, это зарегистрировать учетную запись разработчика на веб-сайте разработчиков eBay .

Сделайте это, и как только вы подтвердите свою электронную почту, вы увидите экран, подобный следующему:

sucess

На этой странице нажмите на ссылку «Получить ключи приложения», которая приведет вас на страницу, где вы можете создать песочницу и рабочие ключи. Затем нажмите кнопку «Создать ключи песочницы», чтобы сгенерировать ключи, которые вы можете использовать для тестирования приложения, которое мы будем создавать. Также нажмите кнопку «Создать производственные ключи», чтобы сгенерировать ключи, которые можно использовать при развертывании приложения. Обратите внимание, что эти ключи можно использовать с любым API-интерфейсом, который предоставляет eBay, поэтому вам придется сделать это только один раз.

После того, как ключи сгенерированы, нажмите на ссылку «Настройка параметров» на любом из ключей (песочница или производство).

В разделе «Настройка формы согласия пользователя eBay» нажмите ссылку «Настройка формы согласия пользователя eBay». Это позволит вам настроить URL, используемый вашим приложением. Это в основном URL-адрес домашней страницы приложения. Оказавшись там, в разделе «Управление своими RuNames» нажмите на ссылку «Создать RuName для своего приложения». RuName является эквивалентом приложения. Если вы создаете разные приложения, которые будут взаимодействовать с разными API eBay, вы можете создать одно RuName для каждого приложения. Как только RuName будет сгенерирован, у вас будет запрошена следующая информация:

  • отображать заголовок — заголовок приложения, которое вы хотите отобразить, когда пользователь позднее предоставит права доступа к вашему приложению. (например, создатель продукта)
  • описание дисплея : описание дисплея — это текст, который описывает, что делает ваше приложение. (например, это приложение позволяет пользователям легко добавлять товары в свой магазин eBay)
  • метод возврата токенаметод возврата токена — это метод, который будет использоваться приложением после того, как пользователь предоставит права доступа вашему приложению. Для этого необходимо указать значение «FetchToken».
  • тип авторизации — тип действия, которое ваше приложение выполняет после того, как пользователь наделит ваше приложение полномочиями. Это может быть либо авторизация, либо ID.verification. Укажите значение «авторизация» для этого поля, поскольку нам нужно, чтобы пользователь дал полномочия нашему приложению выполнять для них различные действия.
  • Тип приложения — тип приложения. Это должно быть «на веб-основе».
  • принять перенаправить URL — URL-адрес, на который перенаправляется пользователь, когда он дает полномочия приложению. Обратите внимание, что eBay разрешает только https URL. Если вы хотите подписаться позже, я рекомендую зарегистрировать учетную запись на openshift.com . Приложения, которые вы там размещаете, будут иметь https по умолчанию, и это бесплатно.
  • Отклонить перенаправить URL -адрес URL -адрес, на который перенаправляется пользователь при отклонении приложения.
  • URL политики конфиденциальности — URL политики конфиденциальности. Этот URL-адрес будет включен в описание приложения, когда пользователь находится на странице для предоставления полномочий приложению.

инструменты

Панель инструментов разработчика EBay предлагает для нас множество инструментов.

Аккаунт в песочнице

Давайте посмотрим на инструмент регистрации пользователей Sandbox. После регистрации учетной записи в песочнице перейдите на sandbox.ebay.com, чтобы проверить вход в систему. После того, как вы убедились, что это работает, вернитесь на страницу учетной записи разработчика eBay.

API Test Tool

Далее идет инструмент тестирования API. Оказавшись на этой странице, вы можете увидеть, что есть несколько вариантов, но они уже предварительно заполнены по умолчанию, так что вы будете иметь представление о том, что делает каждое поле. Прежде чем приступить к игре с этим инструментом, вот краткое описание для каждого поля:

  • Выберите среду — это позволяет переключаться между песочницей и производственной средой. Часто, когда вы просто тестируете с помощью API Test Tool, вы можете использовать для этого «песочницу». Основное различие между ними заключается в том, что песочница может использоваться только с песочницей / тестированием учетных записей eBay, а производство может использоваться только с реальными учетными записями eBay.
  • Выберите набор ключей — это позволяет изменить ключи, которые будут использоваться для выполнения вызовов API. Большую часть времени вам действительно не придется это трогать, потому что при выборе типа среды ключи уже меняются.
  • Выберите API — это позволяет вам выбрать API, которому вы хотите позвонить. Как вы, возможно, уже знаете, eBay имеет различные наборы API: торговля, поиск, покупки, обратная связь и открытые API. В основном мы будем использовать торговый API для этого урока, так что выбирайте его. Обратите внимание, что после выбора торгового API появляется другой набор полей. Он предлагает вам либо сгенерировать токен пользователя, либо вручную ввести существующий. Поскольку мы уже создали учетную запись в песочнице ранее, мы можем просто нажать кнопку «Создать токен пользователя». Это перенаправит вас на страницу, которая выглядит следующим образом:

generate token

Убедитесь, что песочница выбрана для среды, затем нажмите кнопку «продолжить генерирование токена». Это перенаправит вас на страницу входа в eBay. Заполните его своими учетными данными для входа в песочницу. Если вход успешный, он перенаправит вас на страницу авторизации:

agree

Согласитесь авторизовать приложение. Обратите внимание, что это универсальное приложение, используемое eBay в основном для тестирования. Это не приложение, которое мы создали ранее. После этого вы будете перенаправлены на следующую страницу:

token generation

Все, что вам нужно сделать на этой странице, это скопировать сгенерированный токен и нажать кнопку «Сохранить токен». Как только это будет сделано, вы можете вернуться на страницу API Test Tool и вставить токен пользователя, который вы только что скопировали в поле токена пользователя.

  • Выберите вызов API — фактический ресурс в API, который вы хотите запросить. Есть куча звонков, которые вы можете сделать. Вы можете выбрать все, что вас интересует.

  • Выберите шаблон — он может иметь значение «полный, общий» или «частичный, предварительно заполненный». Выбор «full, generic» даст вам пустые поля в поле «Запрос XML», а выбор «частично, предварительно заполненный» даст вам несколько базовых примеров полей, которые уже были заполнены. Поскольку мы только начинаем, использование «частичного, предварительно заполненного» является лучшим выбором, поскольку это уже предоставило бы нам некоторые поля, требуемые выбранным нами ресурсом. Например, если мы выберем «GetItem» для поля «Вызов API», он уже предоставит нам образец ItemID и WarningLevel, и все, что нам нужно сделать, — это нажать кнопку «Отправить» под текстовой областью XML-запроса, чтобы инициировать запрос. Когда вы освоитесь с использованием API, вы можете просто напрямую добавить значения в текстовую область XML-запроса, чтобы изменить фактические данные, которые передаются в API.

  • Выберите вариант вызова — каждый ресурс в API может иметь различные варианты, но в большинстве случаев вам нужно будет только выполнить базовый вызов, чтобы вам не пришлось изменять значение по умолчанию для этого поля.

  • Выберите версию запроса вызова — API eBay претерпел множество изменений, и это означает, что существуют различные версии API, которые все еще используются для поддержки старых систем. Поскольку мы только начинаем использовать API, мы можем просто выбрать последнюю версию, которая на данный момент является версией 885.

  • Выберите Идентификатор сайта — как вы, возможно, уже знаете, существуют разные сайты eBay. Это поле представляет реальный веб-сайт eBay, на который вы хотите позвонить. Поскольку мы просто тестируем с помощью инструмента тестирования API, мы можем просто предоставить США для этого.

  • URI веб-службы — URL, на который сделаны все запросы. Вам не нужно изменять это поле.

  • Заголовки HTTP — информация, предоставленная в заголовке для каждого запроса, который вы делаете к API. Следующие заголовки используются по умолчанию:

X-EBAY-API-COMPATIBILITY-LEVEL:your-request-version X-EBAY-API-DEV-NAME:your-dev-id X-EBAY-API-APP-NAME:your-app-id X-EBAY-API-CERT-NAME:your-cert-id X-EBAY-API-SITEID:your-site-id X-EBAY-API-CALL-NAME:YourAPICallMethod 

Объясняя неясные:

 <?xml version="1.0" encoding="utf-8"?> <GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <ItemID>110072510158</ItemID> <RequesterCredentials> <eBayAuthToken>your-user-token</eBayAuthToken> </RequesterCredentials> <WarningLevel>High</WarningLevel> </GetItemRequest> 

Разбивая его, это указывает версию xml и кодировку, которую мы используем:

 <?xml version="1.0" encoding="utf-8"?> 

Это обертка для нашего запроса. Он использует GetItem запроса GetItem . Обратите внимание, что GetItem — это имя метода в API, но мы должны добавить к нему Request . xmlns используется для указания пространства имен, которому принадлежит вызов. В большинстве случаев значение для этого будет urn:ebay:apis:eBLBaseComponents . И когда я говорю большую часть времени, это означает, что большинство методов Торгового API используют это конкретное пространство имен.

 <GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents"> </GetItemRequest> 

Далее идёт ID товара на ebay.

 <ItemID>110072510158</ItemID> 

Чтобы найти эту информацию, найдите элемент в eBay, а затем нажмите на любой из результатов, которые возвращаются. URL будет выглядеть примерно так:

 http://www.ebay.co.uk/itm/Apple-MacBook-Pro-15-4-2-66Ghz-Dual-Core-8GB-RAM-250GB-Latest-OS-X-10-9-/301305989202?pt=UK_Computing_Apple_Laptops_ET&hash=item46273c8852 

Идентификатор элемента — это набор чисел, который идет сразу после заголовка элемента.
Далее идет обертка для учетных данных запрашивающей стороны:

 <RequesterCredentials> </RequesterCredentials> 

Оболочка учетных данных запрашивающей стороны должна содержать маркер пользователя. Мы уже видели, как получить токен пользователя для учетной записи в песочнице. Получение пользовательского токена для приложения было бы в основном таким же, но нам пришлось бы обрабатывать сохранение токена в базе данных, чтобы мы могли использовать его позже.

 <eBayAuthToken>your-user-token</eBayAuthToken> 

Следующий уровень предупреждения. Это может иметь значение High или Low. Это всегда должно быть установлено на High, чтобы eBay возвращал предупреждения о нераспознанных, устаревших элементах или недопустимых значениях. Это позволит вам проверить ответ, если что-то пошло не так с запросом.

 <WarningLevel>High</WarningLevel> 

Call Response — фактический ответ, возвращаемый API. Нет необходимости изменять это, так как он просто используется для отображения ответа.

Отчет об использовании вызовов API

Последний инструмент, который мы собираемся пройти, — это отчет об использовании вызовов API. Это позволяет вам создавать отчеты об использовании вашего API за определенный промежуток времени. Это хороший инструмент для последующего развертывания приложения, поскольку это позволит вам определить, превышаете ли вы пределы вызовов API для конкретного API, который вы используете для своего приложения. В этом случае вы можете просто подать заявку на eBay, чтобы увеличить лимит API.

База данных

Мы будем использовать MySQL для этого приложения. Будут использованы следующие таблицы:

  • настройки — хранит общие настройки приложения, такие как токен пользователя и идентификатор приложения.
  • store_settings — хранит настройки магазина eBay, которые будут использоваться при создании продуктов.
  • продукты — хранит детали продукта.
  • condition_types — хранит идентификаторы условий элемента и соответствующие им названия.
  • list_types — хранит коды листинга .
  • list_durations — хранить коды длительности листинга .

Создайте новую базу данных, используя что-то вроде phpmyadmin, а затем выполните следующие операторы SQL для создания отдельных таблиц:

настройки

 CREATE TABLE IF NOT EXISTS `settings` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_token` text NOT NULL, `dev_id` varchar(300) NOT NULL, `app_id` varchar(300) NOT NULL, `cert_id` varchar(300) NOT NULL, `run_name` varchar(300) NOT NULL, `site_id` varchar(60) NOT NULL, PRIMARY KEY (`id`) ) 

store_settings

 CREATE TABLE IF NOT EXISTS `store_settings` ( `id` int(11) NOT NULL AUTO_INCREMENT, `store_name` varchar(160) NOT NULL, `county` varchar(160) NOT NULL, `street` varchar(160) NOT NULL, `country_code_type` varchar(60) NOT NULL, `ebay_website` varchar(160) NOT NULL, `postal_code` varchar(60) NOT NULL, `category_mapping` tinyint(1) NOT NULL, `category_prefill` tinyint(1) NOT NULL, `currency_code` varchar(60) NOT NULL, `item_location` varchar(300) NOT NULL, `dispatch_time` int(11) NOT NULL, `listing_duration` varchar(60) NOT NULL, `listing_type` varchar(60) NOT NULL, `condition_type` varchar(60) NOT NULL, `optimal_picturesize` tinyint(1) NOT NULL, `out_of_stock_control` tinyint(1) NOT NULL, `get_it_fast` tinyint(1) NOT NULL, `include_prefilled` tinyint(1) NOT NULL, `shipping_profile` varchar(160) NOT NULL, `return_profile` varchar(160) NOT NULL, `payment_profile` varchar(160) NOT NULL, `shipping_service` varchar(160) NOT NULL, `shippingservice_priority` int(11) NOT NULL, `shippingservice_cost` double NOT NULL, `shippingservice_additionalcost` double NOT NULL, PRIMARY KEY (`id`) ) 

товары

 CREATE TABLE IF NOT EXISTS `products` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(80) NOT NULL, `category_id` varchar(90) NOT NULL, `price` double NOT NULL, `qty` int(11) NOT NULL, `brand` varchar(160) NOT NULL, `description` text NOT NULL, PRIMARY KEY (`id`) ) 

condition_types

 CREATE TABLE IF NOT EXISTS `condition_types` ( `id` int(11) NOT NULL, `name` varchar(160) NOT NULL, PRIMARY KEY (`id`) ) 

listing_types

 CREATE TABLE IF NOT EXISTS `listing_types` ( `name` varchar(160) NOT NULL ) 

listing_durations

 CREATE TABLE IF NOT EXISTS `listing_durations` ( `name` varchar(60) NOT NULL ) 

Для типов условий, типов списков и продолжительности списков мы можем просто вставить данные по умолчанию напрямую. Для этого также выполните следующие запросы.

 INSERT INTO `listing_durations` (`name`) VALUES ('Days_1'), ('Days_10'), ('Days_120'), ('Days_14'), ('Days_21'), ('Days_3'), ('Days_30'), ('Days_5'), ('Days_60'), ('Days_7'), ('Days_90'), ('GTC'); 
 INSERT INTO `listing_types` (`name`) VALUES ('AdType'), ('Auction'), ('Chinese'), ('FixedPriceItem'), ('Half'), ('LeadGeneration'), ('PersonalOffer'), ('Shopping'), ('Unknown'); 
 INSERT INTO `condition_types` (`id`, `name`) VALUES (1000, 'New'), (1500, 'New Other'), (1750, 'New with defects'), (2000, 'Manufacturer refurbished'), (2500, 'Seller refurbished'), (3000, 'Used'), (4000, 'Very Good'), (5000, 'Good'), (6000, 'Acceptable'), (7000, 'For parts or not working'); 

Вывод

В этой части мы подготовили нашу среду и настроили все для плавного рабочего процесса разработки в частях 2 и 3. Оставайтесь с нами для продолжения, в котором мы начнем строить логику нашего приложения!