All Projects → MarcL → AmazonProductAPI

MarcL / AmazonProductAPI

Licence: MIT License
PHP library to retrieve products from the Amazon Product API

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to AmazonProductAPI

composer-inheritance-plugin
Opinionated version of Wikimedia composer-merge-plugin to work in pair with Bamarni composer-bin-plugin.
Stars: ✭ 20 (-83.61%)
Mutual labels:  composer
video-downloader
Video Downloader for Facebook.
Stars: ✭ 63 (-48.36%)
Mutual labels:  composer
laravel-algolia
An Algolia bridge for Laravel
Stars: ✭ 70 (-42.62%)
Mutual labels:  composer
phpsm2sm3sm4
php版本,支持国密sm2的签名算法,非对称加解密,sm3的hash, sm4的对称加解密
Stars: ✭ 80 (-34.43%)
Mutual labels:  composer
assets
Inpsyde Assets is a Composer package (not a plugin) that allows to deal with scripts and styles in a WordPress site.
Stars: ✭ 30 (-75.41%)
Mutual labels:  composer
The-PHP-Workshop
A New, Interactive Approach to Learning PHP
Stars: ✭ 30 (-75.41%)
Mutual labels:  composer
go-amazon-product-advertising-api
Go Client Library for Amazon Product Advertising API
Stars: ✭ 51 (-58.2%)
Mutual labels:  amazon-product-advertising
conso
💢 PHP console applications for cool kids 💢
Stars: ✭ 40 (-67.21%)
Mutual labels:  composer
zauberlehrling
Collection of tools and ideas for splitting up big monolithic PHP applications in smaller parts.
Stars: ✭ 28 (-77.05%)
Mutual labels:  composer
arabicdatetime
An easy and useful tool to get Arabic date with Arabic characters for Laravel.
Stars: ✭ 39 (-68.03%)
Mutual labels:  composer
jwt-auth
JSON Web Token Authentication for Laravel and Lumen
Stars: ✭ 46 (-62.3%)
Mutual labels:  composer
magento2-product-visibillitygrid
Magento 2 module for determining if/when products are showing up in category
Stars: ✭ 33 (-72.95%)
Mutual labels:  composer
phpdoc-vuepress
🎨 Template for generating your PHP API documentation in a pretty VuePress format
Stars: ✭ 19 (-84.43%)
Mutual labels:  composer
sentiment-thermometer
Measure the sentiment towards a word, name or sentence on social networks
Stars: ✭ 56 (-54.1%)
Mutual labels:  composer
client-php
Official NFe.io API Client for PHP
Stars: ✭ 36 (-70.49%)
Mutual labels:  composer
eloquent-mongodb-repository
Eloquent MongoDB Repository Implementation
Stars: ✭ 18 (-85.25%)
Mutual labels:  composer
ecommerce
Laravel open source e-commerce system.
Stars: ✭ 209 (+71.31%)
Mutual labels:  composer
php-dom-wrapper
Simple DOM wrapper library to manipulate and traverse HTML documents similar to jQuery
Stars: ✭ 103 (-15.57%)
Mutual labels:  composer
aplus
Aplus Command Line Tool
Stars: ✭ 71 (-41.8%)
Mutual labels:  composer
terminus-pancakes-plugin
Terminus Plugin to open Pantheon Site Databases in your Favorite SQL Client
Stars: ✭ 22 (-81.97%)
Mutual labels:  composer

AmazonProductAPI

PHP library to perform product lookup and searches using the Amazon Product API.

Installation

This library requires the SimpleXML and Curl extensions to be installed and uses PHP 7+ . Installation is simple using Composer:

composer require marcl/amazonproductapi

Amazon Product API

It also assumes that you have some basic knowledge of Amazon's Product API and have set up an Amazon Associate account see: Amazon Product API Set Up.

You'll need an AWS key, secret key, and associate tag. Ensure that you keep these safe!

Examples

I've added some simple examples in examples.php. To run them create a file called secretKeys.php containing your secret keys:

<?php
$keyId = 'YOUR-AWS-KEY';
$secretKey = 'YOUR-AWS-SECRET-KEY';
$associateId = 'YOUR-AMAZON-ASSOCIATE-ID';
?>

and then run the examples with:

php examples.php

Quick Start

Include the library in your code using the Composer autoloader and create an AmazonUrlBuilder with your credentials

require('vendor/autoload.php');

use MarcL\AmazonAPI;
use MarcL\AmazonUrlBuilder;

// Keep these safe
$keyId = 'YOUR-AWS-KEY';
$secretKey = 'YOUR-AWS-SECRET-KEY';
$associateId = 'YOUR-AMAZON-ASSOCIATE-ID';

// Setup a new instance of the AmazonUrlBuilder with your keys
$urlBuilder = new AmazonUrlBuilder(
    $keyId,
    $secretKey,
    $associateId,
    'uk'
);

// Setup a new instance of the AmazonAPI and define the type of response
$amazonAPI = new AmazonAPI($urlBuilder, 'simple');

$items = $amazonAPI->ItemSearch('harry potter', 'Books', 'price');

Note: Keep your Amazon keys safe. Either use environment variables or include from a file that you don't check into GitHub.

Locale

This library supports all Product Advertising API locales and you can set it as you construct the AmazonUrlBuilder class with your keys.

At this time, these are the current supported locales:

  • Brazil ('br')
  • Canada ('ca')
  • China ('cn')
  • France ('fr')
  • Germany ('de')
  • India ('in')
  • Italy ('it')
  • Japan ('jp')
  • Mexico ('mx')
  • Spain ('es')
  • United Kingdom ('uk')
  • United States ('us')

Item Search

To search for an item use the ItemSearch() method:

// Search for harry potter items in all categories
$items = $amazonAPI->ItemSearch('harry potter');

// Search for harry potter items in Books category only
$items = $amazonAPI->ItemSearch('harry potter', 'Books');

Default sort

By default, the ItemSearch() method will search by featured. If you want to sort by another category then pass a 3rd parameter with the name of the category you wish to sort by. These differ by category type but the two you'll probably need are price (sort by price low to high) or -price (sort by price high to low). See ItemSearch Sort Values for more details.

// Search for harry potter items in Books category, sort by low to high
$items = $amazonAPI->ItemSearch('harry potter', 'Books', 'price');

// Search for harry potter items in Books category, sort by high to low
$items = $amazonAPI->ItemSearch('harry potter', 'Books', '-price');

To determine valid categories for search call GetValidSearchNames():

// Get an array of valid search categories we can use
$searchCategories = $amazonAPI->GetValidSearchNames();

Item Lookup

To look up product using the product ASIN number use ItemLookup():

// Retrieve specific item by id
$items = $amazonAPI->ItemLookUp('B003U6I396');

// Retrieve a list of items by ids
$asinIds = array('B003U6I396', 'B003U6I397', 'B003U6I398');
$items = $amazonAPI->ItemLookUp($asinIds);

Data Transformation

By default the data will be returned as SimpleXML nodes. However, you can ask for the data to be transformed differently, depending on your use case for the API. Pass a type when instantiating the AmazonAPI class as follows:

// Default return type is XML
$amazonAPI = new AmazonAPI($amazonUrlBuilder);
$items = $amazonAPI->ItemSearch('harry potter');
var_dump($items);

This will output:

class SimpleXMLElement#2 (2) {
	public $OperationRequest =>
		class SimpleXMLElement#3 (3) {
			public $RequestId =>
			string(36) "de58449e-0c1a-47ac-9823-00fd049c52df"
			public $Arguments =>
			class SimpleXMLElement#5 (1) {
				public $Argument =>
				array(11) {
	...
// Return simplified data
$amazonAPI = new AmazonAPI($amazonUrlBuilder, 'simple');
$items = $amazonAPI->ItemSearch('harry potter');
var_dump($items);

This will return a simplified version of each item with minimal data but enough for simple use cases.

array(10) {
	[0] =>
	array(8) {
	'asin' =>
	string(10) "B00543R3WG"
	'url' =>
	string(212) "http://www.amazon.co.uk/Harry-Potter-Complete-8-Film-Collection/dp/B00543R3WG%3FSubscriptionId%3D1BM0B8TXM1YSZ1M0XDR2%26tag%3Ddjcr-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00543R3WG"
	'rrp' =>
	double(44.99)
	'title' =>
	string(58) "Harry Potter - The Complete 8-Film Collection [DVD] [2011]"
	'lowestPrice' =>
	double(23.4)
	'largeImage' =>
	string(53) "http://ecx.images-amazon.com/images/I/51qa9nTUsEL.jpg"
	'mediumImage' =>
	string(61) "http://ecx.images-amazon.com/images/I/51qa9nTUsEL._SL160_.jpg"
	'smallImage' =>
	string(60) "http://ecx.images-amazon.com/images/I/51qa9nTUsEL._SL75_.jpg"
	}
	[1] =>
	array(8) {
	'asin' =>
	string(10) "0747558191"
	'url' =>
	string(212) "http://www.amazon.co.uk/Harry-Potter-Philosophers-Stone-Rowling/dp/0747558191%3FSubscriptionId%3D1BM0B8TXM1YSZ1M0XDR2%26tag%3Ddjcr-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0747558191"
	'rrp' =>
	double(6.99)
	'title' =>
	string(40) "Harry Potter and the Philosopher\'s Stone"
	…

The different data transformation types are defined as follows. Feel free to raise an issue if you'd like the data transforming to a new type.

  • xml - (Default) returns data as SimpleXML nodes.
  • array - Returns data as PHP arrays and objects.
  • simple - Returns data as simplified arrays and doesn't contain all API data. Use this if you just need prices, title and images.
  • json - Returns data as a JSON string. Use this for returning from a server API endpoint.

TODO

  • Need to make the simplified data less hardcoded!

Thanks

This library uses code based on AWS API authentication For PHP by David Drake but has been mostly rewritten.

LICENSE

See LICENSE

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].