“Alle guten Dinge sind 3″ – Getreu dem Motto geht es jetzt richtig los. Wir werden eine Abfrage an die Product Advertising API von Amazon mithilfe von PHP tätigen. Damit auch alles reibunglos klappt und das Beispiel auch bei euch nachvollziehbar ist, überprüft bitte noch einmal ob ihr alle erwähnten Grundvoraussetzungen aus dem 1. Teil dieser Serie erfüllt.
Vorab möchte ich noch auf die Seite von Ulrich Mierendorff verweisen. Auf der Grundlage seines Scripts Amazon® AWS HMAC signed request using PHP basiert das hier angeführte Beispiel.
Zum optimalen Verständnis des Scripts werden wir dieses Schritt für Schritt durchgehen – zuerst immer der Code, anschliessend die Erklärung.
1 2 3 | $secretAccessKey = "dein Secret Access Key"; $baseUrl = "http://ecs.amazonaws.de/onca/xml?"; $prepend = "GET\necs.amazonaws.de\n/onca/xml\n"; |
Die Variable $baseUrl ist, wie der Name schon vermuten lässt, die Basis für unsere Anfrage an die Amazon API. Hierzu sollte vielleicht noch einmal angemerkt werden, dass die Domain-Endung “.de” hierbei festlegt, dass unsere Abfrage an den deutschen Amazon-Store gerichtet wird.
Will man z.B. eine Anfrage an den US-Store richten, müsste hier “.com” stehen.
Übersicht Grund-URLs
Die Variable $prepend ist für die spätere Erstellung des “Signed Requests” notwendig. In Sachen Domain-Endung gilt hier dass gleiche wie für die BaseUrl.
1 2 3 4 | $params["Service"] = "AWSECommerceService"; $params["AWSAccessKeyId"] = "deine Access Key Id"; $params["Version"] = "2009-03-31"; $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z"); |
Diese Variablen sollten selbsterklärend sein, wobei die Variable $params["Timestamp"] auch hier nur für die Erstellung des “Signed Requests” benötigt wird.
1 2 3 | $params["Operation"] = "ItemSearch"; $params["SearchIndex"] = "Books"; $params["Keywords"] = "Garten Feng Shui"; |
Die Variable $params["Operation"] steht hierbei für die Art der Anfrage, in diesem Fall eine Artikelsuche.
Übersicht Operationstypen
$params["SearchIndex"] legt die Kategorie fest in der gesucht werden soll.
Übersicht Kategorien
$params["Keywords"] enhält den Suchbegriff für unsere Anfrage.
Zusammengefasst legen wir hier also folgendes fest. Suche nach “Artikeln” (ItemSearch) in der Kategorie “Bücher” (Books) die den Begriff “Garten Feng Shui” (Keywords) enthalten.
Noch eine kleine Anmerkung zu den Variablen. Wie ihr seht werden einige Variablen in einem Array zusammengefasst. Dadurch können wir im folgenden Teil den strengen “Anfrageregeln” von Amazon besser gerecht werden.
1 | ksort($params); |
Zuerst wird das Array mit den Anfrage-Parametern in die richtige Reihenfolge gebracht, sprich alphabetisch sortiert.
1 2 3 4 5 6 7 8 9 10 11 | foreach ($params as $param => $value) { $param = str_replace("%7E", "~", rawurlencode($param)); $value = str_replace("%7E", "~", rawurlencode($value)); $request[] = $param."=".$value; } $request = implode("&", $request); // String für die Signierung erstellen $request_to_sign = $prepend . $request; |
Dann werden die Parameter nach vordefinierten Regeln aufbereitet und anschliessend zu einem zu signierenden String zusammengesetzt.
1 2 3 4 5 6 | $signature = base64_encode( hash_hmac('sha256', $request_to_sign, $secretAccessKey, true) ); $signature = str_replace("+", "%2B", $signature); $signature = str_replace("=", "%3D", $signature); |
Der zuvor erstellte String wird nun mit “base64″ kodiert und mit “sha256″ und dem “secretAccessKey” verschlüsselt. Schliesslich bereinigen wir noch einige Sonderzeichen.
1 2 3 4 5 6 7 8 | $requestString = $baseUrl . $request . "&Signature=" . $signature; $response = file_get_contents($requestString); $xml = simplexml_load_string($response); // Ausgabe des XML-Files print_r($xml); |
Der Abfragestring wird zusammengesetzt, um die erhaltene Signatur ergänzt und im Anschluss kann auch schon unser Request durchgeführt werden.
Jetzt lassen wir uns noch das Ergebnis anzeigen. Fertig
Das soll es also für diese Artikelserie gewesen sein. Man könnte natürlich noch alles in eine Funktion packen um komfortabel Anfragen durchführen zu können. Das hebe ich mir aber für einen eigenen Artikel auf.
Das komplette Skript kannst du natürlich auch downloaden.
Amazon API signierte Abfrage
Amazons API – Teil 1 (Grundlagen)
Amazons API – Teil 2 (Der erste Request)
Amazons API – Teil 3 (Abfrage mit PHP)
adhd cant take stimulants adult…
Buy_it now…
dehli meats during pregnancy…
Buy_now it…
nicotrol inhaler buy free sample oregon…
Buy_now…
decongestants hypertension safe…
Buy_now it…
imodium during pregnancy…
Buy_generic meds…
diabetes popcorn…
Buy_generic pills…
allergy blood testing…
Buy_it now…
atlanta zyprexa lawyers…
Buy_generic drugs…
weight loss pa…
Buy_no prescription…
stop smoking phlegm…
Buy_drugs without prescription…
clinical pharmacists prescribe medication…
Buy_it now…
what foods anorexia eat…
Buy_drugs without prescription…
sample tlc diets…
Buy_generic drugs…
resume clinical sas programmer…
Buy_generic meds…
breast cancer awareness wristband…
Buy_generic meds…
nexium pepsin ac…
Buy_generic drugs…
rebound phenomenon during gradual clonidine withdrawal…
Buy_drugs without prescription…
kids weight gain…
Buy_generic drugs…
healing lithium water in utah…
Buy_no prescription…
social skills training negative symptoms schizophrenia…
Buy_generic meds…
will the recession become a depression…
Buy_without prescription…
teen girl 16 18.6 bmi…
Buy_generic drugs…
list of anti anxiety drugs…
Buy_generic meds…
acne scar and pit lamp…
Buy_generic drugs…
pain relief until root canal…
Buy_generic meds…
drug testing passing short notice…
Buy_generic meds…
overweight employee abuse…
Buy_generic drugs…
liquid tylenol and dogs…
Buy_without prescription…
interactions with azithromycin and astragalus…
Buy_it now…
terry abbot…
Buy_generic drugs…
10 mg provera…
Buy_generic pills…
dog retching vomiting weight loss…
Buy_generic drugs…
john degan anna degan il…
Buy_drugs without prescription…
space herpes…
Buy_now…
benicar hct and norvasc…
Buy_it now…
macon georgia drug court…
Buy_without prescription…
food allergy and adenoids…
Buy_without prescription…
allergy testing and injections…
Buy_without prescription…
esophagus 2009 jelsoft enterprises ltd…
Buy_now it…
fruity taste and diabetes…
Buy_it now…
side@effects.of.protonix.after.it.has.been.stopped“>……
Buynow it…
indications@for.use.of.atrovent“>……
Buygeneric meds…