Biblioteca PHP para realizar búsquedas y búsquedas de productos utilizando la API del producto de Amazon.
Esta biblioteca requiere que se instalen las extensiones SimplexML y Curl y use PHP 7+. La instalación es simple usando el compositor:
composer require marcl/amazonproductapiTambién supone que tiene algunos conocimientos básicos de la API de productos de Amazon y ha configurado una cuenta Associate de Amazon, Ver: Amazon Product API Configuración.
Necesitará una tecla AWS, una clave secreta y una etiqueta de asociación. ¡Asegúrese de mantenerlos a salvo!
He agregado algunos ejemplos simples en examples.php . Para ejecutarlos, cree un archivo llamado secretKeys.php que contenga sus claves secretas:
<?php
$ keyId = ' YOUR-AWS-KEY ' ;
$ secretKey = ' YOUR-AWS-SECRET-KEY ' ;
$ associateId = ' YOUR-AMAZON-ASSOCIATE-ID ' ;
?>Y luego ejecute los ejemplos con:
php examples.phpIncluya la biblioteca en su código utilizando el compositor Autoloader y cree un AmazonurlBuilder con sus credenciales
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 ' );Nota: Mantenga sus llaves de Amazon seguras. Utilice las variables de entorno o incluya desde un archivo que no considera en GitHub.
Esta biblioteca admite todos los locales de API de publicidad de productos y puede establecerla mientras construye la clase AmazonurlBuilder con sus claves.
En este momento, estos son los locales compatibles actuales:
Para buscar un elemento, use el método ItemSearch() :
// 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 ' ); De forma predeterminada, el método ItemSearch() buscará por presentación. Si desea ordenar por otra categoría, pase un tercer parámetro con el nombre de la categoría por la que desea ordenar. Estos difieren según el tipo de categoría, pero los dos que probablemente necesitará son price (ordenado por precio bajo a alto) o -price (ordenar por precio alto a bajo). Consulte los valores de clasificación de la investigación de elementos para obtener más detalles.
// 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 ' ); Para determinar categorías válidas para la búsqueda de llamadas GetValidSearchNames() ::
// Get an array of valid search categories we can use
$ searchCategories = $ amazonAPI -> GetValidSearchNames (); Para buscar el producto utilizando el producto ASIN, 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 );Por defecto, los datos se devolverán como nodos simples. Sin embargo, puede solicitar que los datos se transformen de manera diferente, dependiendo de su caso de uso para la API. Pase un tipo al instanciar la clase Amazonapi de la siguiente manera:
// Default return type is XML
$ amazonAPI = new AmazonAPI ( $ amazonUrlBuilder );
$ items = $ amazonAPI -> ItemSearch ( ' harry potter ' );
var_dump ( $ items );Esto saldrá:
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 );Esto devolverá una versión simplificada de cada elemento con datos mínimos pero suficientes para casos de uso simples.
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"
…
Los diferentes tipos de transformación de datos se definen de la siguiente manera. Siéntase libre de plantear un problema si desea que los datos se transformen en un nuevo tipo.
Esta biblioteca utiliza el código basado en la autenticación de AWS API para PHP por David Drake, pero ha sido reescritado en su mayoría.
Ver licencia