05 de agosto

amazon product advertising api logo

La publicidad de los productos de Amazon API (parte de Amazon Web Services (AWS)) proporciona acceso a los datos de productos de Amazon. No son, básicamente, utilizando JABÓN y REST son dos formas de acceder a la AWS. Para la API de Amazon publicidad del producto ya

08/15/2009 para cambiar el método de autenticación. Razón suficiente para el acceso cambiado en una muestra pequeña para mirar más de cerca.
Se utiliza para extender una clave de API es ahora una pública y una clave de acceso privado es necesario que uno en el registro creado. Para las peticiones SOAP, en su defecto, la autenticación a través de certificados X.509 es posible. Una visión general de la "Solicitud de identificador", llamado así es aquí .

En el ejemplo, la clase AmazonService aceptar la petición de la API Publicidad Amazon producto. Pensemos solamente en el caso si todo va bien. Debe ser añadido en el uso productivo, por supuesto, el control de errores.
La creados cuando se registra clave de acceso se almacena en la clase como constantes. La variable que necesitamos para la respuesta XML de Amazon.

  A
 2
 3
 4
 5
  Clase de servicio de Amazon {
    '< Euer öffentlicher Schlüssel >' ; apikey const = '<Su pública clave>';
    '< Euer privater Schlüssel >' ; private_key const = '<su clave> privado ";
    '< Eure Associates Tracking ID >' ; ASSOCIATE_TAG const = '<Su ID> Asociados de seguimiento';
    ; return $ xml; 

El requisito fundamental es para la construcción de la URL. En su solicitud, y los parámetros de lo creado y el acceso a la clave privada de firma de Amazonas para ser transferido. Esta tarea se realiza mediante la función buildURL .

  A
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
  $params BuildUrl función privada ($ params
       = 'ecs.amazonaws.de' , $path = '/onca/xml' ) { $ Host = 'ecs.amazonaws.de', $ ruta = '/ onca / xml') { 

    "GET \n $host \n $path \n " ; Jefe $ = "GET \ n $ host \ n $ path \ n"; 

    / / Espacios de filtro y
    / / Añade la marca de tiempo y el ID de seguimiento de los Asociados
    / / En los parámetros
    array_filter ( $params $ Params = array_filter ($ params
       ( '$x' , 'return $x;' ) ) ; , Create_function ('$ x', '$ return x;')); 
    'Timestamp' ] = gmdate ( 'Ymd\TH:i:s\Z' ) ; $ Params ['timestamp'] = gmdate ('Ymd \ TH: i: s \ Z');
    'AssociateTag' ] = self :: ASSOCIATE_TAG ; $ Params ['AssociateTag'] = self :: ASSOCIATE_TAG; 
    $params ) ; ksort ($ params); 

    implode ( '&' $ Cuerpo = implode ('&'
       ( create_function ( '$x,$y' , 'return "$x=".urlencode($y);' ) , Array_map (create_function ('$ x, $ y "," Volver "$ x =" urlencode ($ y);.')
       ( $params ) , $params ) ) ; , Array_keys ($ params), $ params)); 

    / / Crear la firma usando la clave privada de acceso
    urlencode ( base64_encode ( hash_hmac ( 'sha256' $ Sig = urlencode (base64_encode (hash_hmac ('sha256'
       . $body , self :: PRIVATE_KEY , true ) ) ) ; , El cuerpo de la cabeza $ $, self :: private_key, true))).; 

    ? $body &Signature= $sig " ; return "http:// $ host $ ruta $ cuerpo = $ & Firma señal"?;
 } 

Así preparado, ahora podemos hacer con los datos de un libro sobre la consulta del Amazonas. El código necesario es en la función getBookByIsdn( $isbn ) encapsulado. Para guardar los resultados de la consulta, la clase de Book usado en este momento no considero aún más, ya que sólo los métodos de consulta a las variables y un conjunto (getter y setter) incluye. Una matriz asociativa, lo haría en este momento también.

  A
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
  $isbn ) { función de getBookByIsdn ($ isbn) {
    curl_init ( ) ; $ Ch = curl_init ();

    / Compilación / La dirección URL de la AWS-llamada
    array ( "Service" => "AWSECommerceService" $ Params = array ("Servicio" => "AWSECommerceService"
       => self :: APIKEY "Awsaccesskeyid" => self :: apikey
       => "ItemLookup" , "Servicio" => "ItemLookup"
       => "ISBN" "IdType" => "ISBN"
       => $isbn "ItemId" isbn => $
       => "Medium" , "Grupo de Respuesta a" => "medio"
       => "Books" ) ; , "De búsqueda" => "libros");

    $this -> buildURL ( $params ) ; $ Url = $ this -> BuildUrl ($ params);

    / / Obtener los datos
    $ch , CURLOPT_URL , $url ) ; curl_setopt ($ ch, CURLOPT_URL, $ url);
    $ch , CURLOPT_HEADER , 0 ) ; curl_setopt ($ ch, CURLOPT_HEADER, 0);
    $ch , CURLOPT_RETURNTRANSFER , 1 ) ; curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);

    curl_exec ( $ch ) ; $ Resultado = curl_exec ($ ch);
    $ch ) ; curl_close ($ ch);   

    / / Leer XML
    simplexml_load_string ( $result ) ; $ Xml = simplexml_load_string ($ resultado);
    xml = $xml ; $ This-> xml = $ xml;

    '/\d+/' preg_match ('/ \ d + /'
       -> Items -> Item -> ItemAttributes -> PublicationDate , $treffer ) ; $ Xml -> Artículos -> Punto -> ItemAttributes -> Fecha de publicación, $ coincidencias);
    $treffer [ 0 ] ; $ Año = $ coincidencias [0];

    / Tienda / preparado y de la consecuencia
    new Book ( ) ; $ Libro = libro nuevo ();
    setBarcode ( utf8_decode ( $ Book -> setBarcode (utf8_decode (
       Items -> Item -> ItemAttributes -> EAN ) ) ; $ Xml -> Artículos -> Punto -> ItemAttributes -> UPC));
    setAuthor ( utf8_decode ( $ Book -> setAuthor (utf8_decode (
       Items -> Item -> ItemAttributes -> Author ) ) ; $ Xml -> Artículos -> Punto -> ItemAttributes -> Autor));      
    setJahr ( $jahr ) ; $ Book -> setJahr ($ año);
    setVerlag ( utf8_decode ( $ Book -> setVerlag (utf8_decode (
       Items -> Item -> ItemAttributes -> Publisher ) ) ; $ Xml -> Artículos -> Punto -> ItemAttributes - Editorial>));
    setTitel ( utf8_decode ( $ Book -> vitrectomía (utf8_decode (
       Items -> Item -> ItemAttributes -> Title ) ) ; $ Xml -> Artículos -> Punto -> ItemAttributes - Título>));
    setInhalt ( utf8_decode ( $ Book -> Contenido del kit (utf8_decode (
       Items -> Item -> EditorialReviews -> EditorialReview -> Content ) ) ; $ Xml -> Artículos -> Punto -> Editorial Reviews -> Revisión Editorial -> contenido));
    setBildUrl ( $xml -> Items -> Item -> MediumImage -> URL ) ; $ Book -> setBildUrl ($ xml -> Artículos -> Punto - Imagen> Media -> URL);

    ; return $ libro;
 } 

Después de crear la dirección URL de la solicitud (línea 13) y sus medios de llamar a curl_exec (línea 20), la respuesta XML en la línea 24 y luego analizado en un objeto de la clase Book se almacena.

Si sólo la llamada y la salida.

  A
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
  <Php
    / / Consulta
    new AmazonService ( ) ; Amazon AWS $ = new Service ();

    htmlspecialchars ( $_POST [ 'isbn' ] ) ; $ Isbn = htmlspecialchars ($ _POST ['ISBN']);
    array ( $aws -> getBookByIsdn ( $isbn ) ) ; $ Libros = array ($ AWS -> getBookByIsdn ($ isbn));
 >
 <- Salida ->
 <table>
    <tr>
       <th> N º </ th>
       <th> cubierta </ ​​th>
       <th> Título </ th>
       Autor <th> (años) </ th>
       <th> contenido </ th>
       <th> Autor </ th>
    </ Tr>
 <Php 
    $i = 0 ; $i < count ( $books ) ; $i ++ ) { for ($ i = 0; $ i <count ($ libros); $ i + +) {
       $books [ $i ] ; $ Libro = $ libros [$ i];
 >
       <tr>
          + 1 ?> </td> <td> <? = $ i + 1> </ td>
          -> getBildUrl ( ) ?> " /></td> <td> <img src = "<= $ libro -> getBildUrl ()>" /> </ td>
          -> getTitel ( ) ?> </td> <td> <= $ libro -> getTitle ()> </ td>?
          -> getAuthor ( ) ?> ( <?= $book -> getJahr ( ) ?> )</td> <td> <= $ libro -> getAutor ()> (<= $ libro -> getJahr ()>) </ td>
          -> getInhalt ( ) ?> </td> <td> <= $ libro -> getInhalt ()> </ td>?
          -> getVerlag ( ) ?> </td> <td> <= $ libro -> getVerlag ()> </ td>?
       </ Tr>
 ?> <? Php}?>
 </ Table> 

Enlaces:
Amazon publicidad de los productos de la API
Publicidad de los productos de la API - Guía para desarrolladores
Registro
Amazon Web Services con PHP tutorial

Actualización:
Desde 01/11/2011 se AssociateTag un parámetro que se requiere para cada solicitud.

Un símbolo alfanumérico que identifica de forma única para asociar. Este símbolo es el medio por el que identifica a la Amazonia Asociado al crédito para la venta. Si se realiza una solicitud, sin identificar a la asociación, los honorarios asociados no se les paga por Amazon. Si el AssociateTag está incluido en la solicitud CartCreate, el valor se incluye automáticamente en AssociateTag para el PurchaseURL, que es devuelto por CartCreate. Para obtener asociado de Día, vaya a https://affiliate-program.amazon.com . Para obtener más información, ver el día de Asociado.

Valores válidos: Un token alfanumérica distribuido por Amazon que identifica de forma única para asociar. Utilice este valor en todas las solicitudes para recibir el crédito para la compra del cliente.

gklinkmann escrito por \ \ tags: , , ,

9 comentarios a "Publicidad del Producto Amazon consulta de la API con PHP"

  1. Andy dice:

    Hola,
    Yo soy sólo por casualidad encontré tu blog, porque yo estoy justo en frente de este problema y es muy fácil de romper no entiendo como yo. Por desgracia, no está claro para mí cómo debo tomar el libro de la clase. Tal vez usted me podría ayudar allí.
    Le saluda atentamente,
    Andy

  2. gklinkmann dice:

    Lo siento, soy de información tan tarde. El libro de la clase incluye sólo los datos que se denomina un objeto de transferencia de datos (DTO) y sólo tiene los métodos getter y setter para las propiedades.

  3. Marco dice:

    Lástima que por desgracia es una secuencia de comandos de la API AWS que no sea incompleta o simplemente no funciona sin problemas. Amazon es, por desgracia aún menos útil.

  4. gklinkmann dice:

    @ Marco

    Lo único que falta es la clase de libro, que sólo se utiliza para almacenar los datos. Estos pueden ser reemplazados por sus propias variables y escribir dentro de los 5 minutos, ya que consiste sólo en Attibuten (por ejemplo, título) y los métodos get y set para estos atributos.

    Desde que tengo el servicio de primera clase del Amazonas como en este caso incluso el uso, estaría agradecido por descripciones de error.

  5. MEPO dice:

    Wow, piezas pesadas sin uno de nuestros conocimientos previos. Pero yo voy a usar las secuencias de comandos de nuevo y tratar de ver si puedo hacerlo. Gracias en primer lugar para la lista completa!

  6. Tilo dice:

    Yo lo veo así ... MEPO no será fácil! Gracias por las descripciones de los grandes! También voy a probar mi suerte!

  7. Oliver dice:

    Hola, ¿alguien sabe si existe tal cosa como un plugin para Wordpress? Así que esto me lleva a entregar los datos ASIN u opiniones de Amazon?

  8. gklinkmann dice:

    Yo soy por desgracia no se conoce ninguno.

  9. MEPO dice:

    Hola Oliver,

    Por desgracia, no. Conozco a un plugin que te da sobre la base de palabras clave y los días de productos los productos adecuados de Amazonas y se clava en una base de datos. Desde allí se puede seguir procesarlos.

Añadir un comentario

Sí, me gustaría ser notificado sobre comentarios!