Pull to refresh

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

Reading time2 min
Views14K
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.  
Tags:
Hubs:
Total votes 2: ↑2 and ↓0+2
Comments9

Articles