Amazon WS - Récupérer le prix d'un produit

Nilav
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 13
Inscription: 8 Mar 2010

Amazon WS - Récupérer le prix d'un produit

Message le Jeu Juin 30, 2011 17:12

Bonsoir,

Je suis inscrit à AWS, j'ai mon identifiant et ma clé secrète. Après des heures de recherche, j'ai trouvé comment créer une signature nécessaire pour faire les requêtes en utilisant un script trouvé sur le net. Toutefois, j'ai deux problèmes, l'un que je pense pouvoir régler seul, il me sort le XML directement sur ma page mais ça, c'est parce que le script lui dit de le faire.
En revanche, mon vrai problème, c'est que le XML ne contient pas le prix du produit que je lui ai demandé de récupéré.
En testant les quelques liens qu'il fournit, notamment les images, j'ai pu constater qu'il récupérait le bon produit.

Voici le code que j'utilise
Code: Tout sélectionner
<?
$AWSAccessKeyId = "***";
$SecretAccessKey = "***";

$ItemId = "B004ASORCU"; // ASIN
$Timestamp = gmdate("Y-m-d\TH:i:s\Z");
$Timestamp = str_replace(":", "%3A", $Timestamp);
$ResponseGroup = "ItemAttributes,Offers,Images,Reviews";
$ResponseGroup = str_replace(",", "%2C", $ResponseGroup);

$String = "AWSAccessKeyId=$AWSAccessKeyId&
ItemId=$ItemId&
Operation=ItemLookup&
ResponseGroup=$ResponseGroup&
Service=AWSECommerceService&
Timestamp=$Timestamp&
Version=2009-01-06";

$String = str_replace("\n", "", $String);

$Prepend = "GET\nwebservices.amazon.com\n/onca/xml\n";
$PrependString = $Prepend . $String;

$Signature = base64_encode(hash_hmac("sha256", $PrependString, $SecretAccessKey, True)); 
$Signature = str_replace("+", "%2B", $Signature);
$Signature = str_replace("=", "%3D", $Signature);

$BaseUrl = "http://webservices.amazon.com/onca/xml?";
$SignedRequest = $BaseUrl . $String . "&Signature=" . $Signature;

$XML = simplexml_load_file($SignedRequest);

echo '<a href="'.$SignedRequest.'">XML</a><p>';
print_r ($XML);
?>


Si vous avez quelque chose qui fonctionne, ça m'intéresse, notamment directement de la bibliothèque d'Amazon, je n'ai rien trouvé car tous les liens sur lesquels je tombe sont morts ou ne date pas de la dernière MAJ de l'API. Alors je ne sais pas trop où chercher tellement il y a de contenu.
Concernant mon besoin, je n'ai besoin que d'une seule chose, le prix d'un produit particulier. Même le titre du produit j'm'en fous :mrgreen:

Merci d'avance, en espérant avoir posté au bon endroit.

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2685
Inscription: 13 Fév 2004

Re: Amazon WS - Récupérer le prix d'un produit

Message le Ven Juil 01, 2011 9:57

Et si tu nous montrais ce que tu obtiens comme XML en retour?

Jacques.

Nilav
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 13
Inscription: 8 Mar 2010

Re: Amazon WS - Récupérer le prix d'un produit

Message le Ven Juil 01, 2011 10:17

Récupéré de l'URL et pas du contenu envoyé sur ma page, ceci dit, c'est le même.
Code: Tout sélectionner
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<ItemLookupResponse>
<OperationRequest>
<HTTPHeaders>
<Header Name="UserAgent" Value="Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24"/>
</HTTPHeaders>
<RequestId>4d80ea5a-61b7-4bce-9068-e042076b1107</RequestId>
<Arguments>
<Argument Name="Operation" Value="ItemLookup"/>
<Argument Name="Service" Value="AWSECommerceService"/>
<Argument Name="Signature" Value="82SNA2204yM/3r9Je0NNRsbUyc0KjtN2rlOOSwTIpr0="/>
<Argument Name="Version" Value="2009-01-06"/>
<Argument Name="ItemId" Value="B004ASORCU"/>
<Argument Name="AWSAccessKeyId" Value="AKIAIK3FEN5J57IWVEPA"/>
<Argument Name="Timestamp" Value="2011-07-01T09:14:41Z"/>
<Argument Name="ResponseGroup" Value="ItemAttributes,Offers,Images,Reviews"/>
</Arguments>
<RequestProcessingTime>0.0119760000000000</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>True</IsValid>
<ItemLookupRequest>
<Condition>New</Condition>
<DeliveryMethod>Ship</DeliveryMethod>
<IdType>ASIN</IdType>
<MerchantId>Amazon</MerchantId>
<OfferPage>1</OfferPage>
<ItemId>B004ASORCU</ItemId>
<ResponseGroup>ItemAttributes</ResponseGroup>
<ResponseGroup>Offers</ResponseGroup>
<ResponseGroup>Images</ResponseGroup>
<ResponseGroup>Reviews</ResponseGroup>
<ReviewPage>1</ReviewPage>
<ReviewSort>-SubmissionDate</ReviewSort>
<VariationPage>All</VariationPage>
</ItemLookupRequest>
</Request>
<Item>
<ASIN>B004ASORCU</ASIN>
<DetailPageURL>
http://www.amazon.com/Top-Spin-2/dp/B004ASORCU%3FSubscriptionId%3DAKIAIK3FEN5J57IWVEPA%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB004ASORCU
</DetailPageURL>
<ItemLinks>
<ItemLink>
<Description>Technical Details</Description>
<URL>
http://www.amazon.com/Top-Spin-2/dp/tech-data/B004ASORCU%3FSubscriptionId%3DAKIAIK3FEN5J57IWVEPA%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB004ASORCU
</URL>
</ItemLink>
<ItemLink>
<Description>Add To Baby Registry</Description>
<URL>
http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3DB004ASORCU%26SubscriptionId%3DAKIAIK3FEN5J57IWVEPA%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB004ASORCU
</URL>
</ItemLink>
<ItemLink>
<Description>Add To Wedding Registry</Description>
<URL>
http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3DB004ASORCU%26SubscriptionId%3DAKIAIK3FEN5J57IWVEPA%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB004ASORCU
</URL>
</ItemLink>
<ItemLink>
<Description>Add To Wishlist</Description>
<URL>
http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3DB004ASORCU%26SubscriptionId%3DAKIAIK3FEN5J57IWVEPA%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB004ASORCU
</URL>
</ItemLink>
<ItemLink>
<Description>Tell A Friend</Description>
<URL>
http://www.amazon.com/gp/pdp/taf/B004ASORCU%3FSubscriptionId%3DAKIAIK3FEN5J57IWVEPA%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB004ASORCU
</URL>
</ItemLink>
<ItemLink>
<Description>All Customer Reviews</Description>
<URL>
http://www.amazon.com/review/product/B004ASORCU%3FSubscriptionId%3DAKIAIK3FEN5J57IWVEPA%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB004ASORCU
</URL>
</ItemLink>
<ItemLink>
<Description>All Offers</Description>
<URL>
http://www.amazon.com/gp/offer-listing/B004ASORCU%3FSubscriptionId%3DAKIAIK3FEN5J57IWVEPA%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB004ASORCU
</URL>
</ItemLink>
</ItemLinks>
<SmallImage>
<URL>
http://ecx.images-amazon.com/images/I/61HaJ9rvjIL._SL75_.jpg
</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">65</Width>
</SmallImage>
<MediumImage>
<URL>
http://ecx.images-amazon.com/images/I/61HaJ9rvjIL._SL160_.jpg
</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">139</Width>
</MediumImage>
<LargeImage>
<URL>
http://ecx.images-amazon.com/images/I/61HaJ9rvjIL.jpg
</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">435</Width>
</LargeImage>
<ImageSets>
<ImageSet Category="primary">
<SwatchImage>
<URL>
http://ecx.images-amazon.com/images/I/61HaJ9rvjIL._SL30_.jpg
</URL>
<Height Units="pixels">30</Height>
<Width Units="pixels">26</Width>
</SwatchImage>
<SmallImage>
<URL>
http://ecx.images-amazon.com/images/I/61HaJ9rvjIL._SL75_.jpg
</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">65</Width>
</SmallImage>
<ThumbnailImage>
<URL>
http://ecx.images-amazon.com/images/I/61HaJ9rvjIL._SL75_.jpg
</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">65</Width>
</ThumbnailImage>
<TinyImage>
<URL>
http://ecx.images-amazon.com/images/I/61HaJ9rvjIL._SL110_.jpg
</URL>
<Height Units="pixels">110</Height>
<Width Units="pixels">96</Width>
</TinyImage>
<MediumImage>
<URL>
http://ecx.images-amazon.com/images/I/61HaJ9rvjIL._SL160_.jpg
</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">139</Width>
</MediumImage>
<LargeImage>
<URL>
http://ecx.images-amazon.com/images/I/61HaJ9rvjIL.jpg
</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">435</Width>
</LargeImage>
</ImageSet>
<ImageSet Category="swatch">
<SwatchImage>
<URL>
http://ecx.images-amazon.com/images/I/41LHXv0oGIL._SL30_.jpg
</URL>
<Height Units="pixels">30</Height>
<Width Units="pixels">24</Width>
</SwatchImage>
<SmallImage>
<URL>
http://ecx.images-amazon.com/images/I/41LHXv0oGIL._SL75_.jpg
</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">59</Width>
</SmallImage>
<ThumbnailImage>
<URL>
http://ecx.images-amazon.com/images/I/41LHXv0oGIL._SL75_.jpg
</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">59</Width>
</ThumbnailImage>
<TinyImage>
<URL>
http://ecx.images-amazon.com/images/I/41LHXv0oGIL._SL110_.jpg
</URL>
<Height Units="pixels">110</Height>
<Width Units="pixels">87</Width>
</TinyImage>
<MediumImage>
<URL>
http://ecx.images-amazon.com/images/I/41LHXv0oGIL._SL160_.jpg
</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">127</Width>
</MediumImage>
<LargeImage>
<URL>
http://ecx.images-amazon.com/images/I/41LHXv0oGIL.jpg
</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">396</Width>
</LargeImage>
</ImageSet>
</ImageSets>
<ItemAttributes>
<Binding>Blu-ray</Binding>
<EAN>5026555402750</EAN>
<PackageDimensions>
<Height Units="hundredths-inches">63</Height>
<Length Units="hundredths-inches">669</Length>
<Weight Units="hundredths-pounds">22</Weight>
<Width Units="hundredths-inches">528</Width>
</PackageDimensions>
<PackageQuantity>1</PackageQuantity>
<Platform>PlayStation 3</Platform>
<ProductGroup>Video Games</ProductGroup>
<ProductTypeName>ABIS_VIDEO_GAMES</ProductTypeName>
<Title>Top Spin 2</Title>
</ItemAttributes>
<OfferSummary>
<TotalNew>0</TotalNew>
<TotalUsed>0</TotalUsed>
<TotalCollectible>0</TotalCollectible>
<TotalRefurbished>0</TotalRefurbished>
</OfferSummary>
<Offers>
<TotalOffers>0</TotalOffers>
<TotalOfferPages>0</TotalOfferPages>
</Offers>
</Item>
</Items>
</ItemLookupResponse>


Merci pour ton aide :)


spout
WRInaute accro
WRInaute accro
 
Messages: 4376
Inscription: 14 Mai 2003

Re: Amazon WS - Récupérer le prix d'un produit

Message le Ven Juil 01, 2011 13:04

Et pourquoi ne pas utiliser le SDK ?

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2685
Inscription: 13 Fév 2004

Re: Amazon WS - Récupérer le prix d'un produit

Message le Ven Juil 01, 2011 14:33

Tu fais une requête sur Amazon US pour un produit qui n'y est pas disponible (mais qui est disponible sur Amazon.fr, qui est celui qui t'intéresse, je suppose). Il faut que tu interroges le serveur .fr et pas le .com...

Note que tu te plains que les exemples que tu as trouvés sont pour des vieilles versions, mais ton code n'est pas du tout à jour non plus (il n'utilise même pas le bon domaine), et en plus il me semble excessivement mal écrit, tous ces str_replace "custom" c'est assez horrible, ce serait nettement plus simple, et plus sûr, d'utiliser urlencode sur chaque paramètre.

Jacques.

Nilav
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 13
Inscription: 8 Mar 2010

Re: Amazon WS - Récupérer le prix d'un produit

Message le Lun Juil 04, 2011 9:57

jcaron a écrit:Tu fais une requête sur Amazon US pour un produit qui n'y est pas disponible (mais qui est disponible sur Amazon.fr, qui est celui qui t'intéresse, je suppose). Il faut que tu interroges le serveur .fr et pas le .com...

Note que tu te plains que les exemples que tu as trouvés sont pour des vieilles versions, mais ton code n'est pas du tout à jour non plus (il n'utilise même pas le bon domaine), et en plus il me semble excessivement mal écrit, tous ces str_replace "custom" c'est assez horrible, ce serait nettement plus simple, et plus sûr, d'utiliser urlencode sur chaque paramètre.

Jacques.

Merci, je m'en étais aperçu avant ce week-end et avait corrigé. Pour la propreté du code, je ne suis pas expert et s'il n'est pas à jour, je veux bien un lien, même sur le site d'Amazon qui présenterait l'outil. En attendant, je m'occuperai déjà du urlencode. :)

Concernant le "il n'utilise même pas le bon domaine", à la décharge du codeur, il était anglo-saxon, il n'allait donc pas chercher sur la version FR.

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2685
Inscription: 13 Fév 2004

Re: Amazon WS - Récupérer le prix d'un produit

Message le Lun Juil 04, 2011 12:57

Au delà du pays, le domaine utilisé correspond à une vieille version. D'ailleurs la version de l'API demandée (qui date de 2009) est très loin d'être la dernière.

Pourquoi ne pas télécharger le SDK PHP disponible sur le site Amazon?

Jacques.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité