Получаем информацию по продуктам от Амазона через API

PHP*
Amazon.com это не только огромный магазин, но еще и бесплатный легальный доступ к огромному количеству информации по продуктам. Некотрое время назад, Амазон перестал принимать запросы без подписи, скрипт, который я написал, подписывает запрос в соответствии с текущими требованиями API. В качестве примера, я хочу показать, как получать информацию по книгам через API Амазона зная только ISBN номер.

Для начала, необходимо пройти регистрацию на сайте aws.amazon.com. После чего вы получаете доступ к Вашей учетной записи, в которой необходимо обратить внимание на закладку «Access Identifiers». Для правильной работы скрипта, необходимо скопировать два параметра «Your Access Key ID» и «Your Secret Access Key». После чего, вставить эти идентификаторы в соответствующие строки скрипта. В результате, скрипт, будет получать информацию по книге в XML формате. Который, вы можете использовать по своему усмотрению.

Более подробно о параметрах, которые вы можете передавать API вы можете прочитать на сайте амазона здесь

Copy Source | Copy HTML
  1. <?php
  2. $info = getBookInfo('1591409268', ваш_access_key, ваш_secure_access_key);
  3.  
  4. print $info;
  5.  
  6. function getBookInfo($isbn, $access_key, $secure_access_key)
  7. {
  8.   // формируем список параметров запроса
  9.   $fields = array();
  10.   $fields['AWSAccessKeyId'] = $access_key;
  11.   $fields['ItemId'] = $isbn;
  12.   $fields['MerchantId'] = 'All';
  13.   $fields['Operation'] = 'ItemLookup';
  14.   $fields['ResponseGroup'] = 'Request,Large';
  15.   $fields['Service'] = 'AWSECommerceService';
  16.   $fields['Version'] = '2009-01-06';
  17.   $fields['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');
  18.  
  19.   // сортируем параметры согласно спецификации Amazon API
  20.   ksort($fields);
  21.  
  22.   $query = array();
  23.   foreach ($fields as $key=>$value) {
  24.     $query[] = "$key=" . urlencode($value);
  25.   }
  26.  
  27.   // подписываем запрос секретным ключом
  28.   $string = "GET\nwebservices.amazon.com\n/onca/xml\n" . implode('&', $query);
  29.   $signed = urlencode(base64_encode(hash_hmac('sha256', $string, $secure_access_key, true)));
  30.  
  31.   // формируем строку запроса к сервису
  32.   $url = 'http://webservices.amazon.com/onca/xml?' . implode('&', $query) . '&Signature=' . $signed;
  33.  
  34.   $ch = curl_init();
  35.   curl_setopt($ch, CURLOPT_URL, $url);
  36.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  37.   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  38.   $data = curl_exec($ch);
  39.   $info = curl_getinfo($ch);
  40.  
  41.   if ($info['http_code'] != '200') return false;
  42.  
  43.   return $data;
  44. }
  45. ?>
  46.  
+2
18 августа 2009, 16:04
12
aig 89,0

комментарии (9)

0
Nc_Soft #
А по муз.альбомам так можно?
0
aig #
Да, это такой же продукт, как и все остальное на амазоне. Например, если ввести номер продукта B002LBSJ7M, то можно получить информацию по Imperial Blaze by Sean Paul. Плюс Api позволяет искать продукты.
0
Joka #
я что-то не понял если честно. в чем ценность скрипта? он реализует стандартные API амазона, документация у них неплохая, сделать сможет даже новичок. в чем фишка?
+1
aig #
Думал будет интересно тем, кто не знает об этом API. Плюс в документации не очень хорошо описан сам процесс организцаии подписи для PHP, по крайней мере мне пришлось искать это в ее дебрях.
0
leshaogonkov #
Преобразовав пример выше можно превьюшки треков таскать с амазона, я считаю.
0
lonelydreamer #
Вообще с 15 августа амазоновцы планировали сделать запросы через их API платными.
Касательно инофрмации по продуктам с их магазина: 1000 запросов — $0.15

А еще есть готовый Zend_Service_Amazon из Zend_Framework, который очень удобно использовать.
0
aig #
По-поводу оплаты, не могу найти эту информацию на сайте амазона, можно ссылочку?
0
crash #
>>ksort($fields);
амазон говорит сортировать по значению параметров
0
crash #
нет, виноват

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.