Skip to content

Commit

Permalink
Obtener precio de Amazon api por ASIN
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrew0914 committed Oct 26, 2017
1 parent 9ede3ed commit 060235c
Showing 1 changed file with 54 additions and 4 deletions.
58 changes: 54 additions & 4 deletions class/AmazonConnection.php
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,11 @@ private function construirPeticion($region, $params, $version='2011-08-01'){
// tag de socio para comision por click
$params['AssociateTag'] = AmazonConnection::AWS_ASSOCIATE_TAG;
//Queremos solo electronicos
$params['SearchIndex'] = "Electronics";
//para otras peticiones si se pasa el id o ASIN no es requerido el indice de electronicos
if(!isset($params['ItemId'])){
$params['SearchIndex'] = "Electronics";
}

//ordenamos los parametros
ksort($params);
$url_query = array();
Expand Down Expand Up @@ -598,8 +602,54 @@ public function cargarProductos(){
// si NO es la ultima seccion en su ultimo conjunto ejecutamos el proceso de carga de producto
if($ultima != $total_secciones AND $conjunto_paginas!=2){
$this->getProductosByNodos($nodos,$conjunto_paginas);
}
}
}

/**
* Obtiene el precion de un producto especifico pro ASIN
* @param [String] $asin [asin del producto]
* @return [int] $precio
*/
public function getPriceAmazonApi($asin){
$amazon = $this;
$precio = null;
// realizamos la peticion esta vez por ASIN y obtenemos
// la informacion de las ofertas (precios)
$parametros = array('Operation' => 'ItemLookup',
'ItemId' => $asin,
'MechantId' => 'All',
'Condition' => 'All',
'ResponseGroup' => 'OfferFull');



$peticion = $amazon->construirPeticion("com.mx",$parametros);

$xmlContent = @file_get_contents($peticion);

if($xmlContent === FALSE){
$precion = null;
}else{
$pxml = simplexml_load_string($xmlContent);
}
// obtenemos el item
$item = $pxml->Items->Item;
// si el precio mas bajo no esta
if(isset($item->OfferSummary->LowestNewPrice->Amount)){
$division = ($item->OfferSummary->LowestNewPrice->Amount) / 100;
$precio = floor($division);
//si no ontenemos e precio de lista
}else if(isset($item->Offers->Offer->OfferListing->Price->Amount)){
// para los dos casos usamos el precio sin formato
// pero lo dividmos entre 100 ya que todos los precion traen dos decimales
// sin importar que sea 00 y el api lo devuelve sin punto es decir 100 veces mas grande
$division = ($item->Offers->Offer->OfferListing->Price->Amount) / 100;
$precio = floor($division);
}else{
$precio ="Sin precion obtenido";
}
// regresamso el precio
return $precio;
}

}
Expand All @@ -608,6 +658,6 @@ public function cargarProductos(){
//ejecutar a una hora cronjob
//$amazon->seccionarNodos();
// ejecutar 20 veces, 1 vez cada 3 minuos cronjobs
$amazon->cargarProductos();

//$amazon->cargarProductos();
echo $amazon->getPriceAmazonApi('B01J5RHBQ4');
?>

0 comments on commit 060235c

Please sign in to comment.