Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Amazon API - Versandupdate

Mitglied: WPFORGE

WPFORGE (Level 1) - Jetzt verbinden

28.08.2016 um 09:24 Uhr, 1119 Aufrufe, 5 Kommentare

Ich versuche über die Amazon API Trackingnummern für den Versand zu hinterlegen.
Bisher versuche ich das mit einem XML Template.
Grundsätzlich funktioniert der Code auch.
Allerdings scheint das XML Mist zu sein.
Amazon bietet auch die Möglichkeit ein CSV File zu übermitteln.

Jetzt habe ich mal gelernt, dass man Dateien als GET oder POST Feld übermittelt.
Das ist unten gelisteten Code offensichtlich nicht so.
Und ich muss zugeben, ganz verstanden habe ich nicht, was genau da passiert.

Die Übermittlung des CSV Files muss auf dem gleichen Weg möglich sein.
Die Frage ist jetzt, wie bekomme ich das Fiel in einen String gewandelt, den ich so übermitteln kann?

Danke schonmal für eure Antworten.

01.
$param= array();
02.
$param['AWSAccessKeyId']     = $amazonAWSAccessKeyId;
03.
$param['Action']             = 'SubmitFeed';
04.
$param['Merchant']           = $amazonSellerId;
05.
$param['FeedType']       = '_POST_INVENTORY_AVAILABILITY_DATA_';
06.
$param['SignatureMethod']    = 'HmacSHA256';
07.
$param['SignatureVersion']   = '2';
08.
$param['Timestamp']          = gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z",time());
09.
$param['Version']            = '2009-01-01';
10.
$param['PurgeAndReplace']    = 'false';
11.

12.
$secret= $amazonSecretKey;
13.

14.
$url= array();
15.
foreach ($paramas $key=> $val){
16.

17.
    $key= str_replace("%7E","~",rawurlencode($key));
18.
    $val= str_replace("%7E","~",rawurlencode($val));
19.
    $url[]= "{$key}={$val}";
20.
}
21.

22.
$amazon_feed= '<?xml version="1.0" encoding="UTF-8"?>
23.
<AmazonEnvelope xsi:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
24.
<Header>
25.
<DocumentVersion>1.01</DocumentVersion>
26.
<MerchantIdentifier>'.$amazonSellerId.'</MerchantIdentifier>
27.
</Header>
28.
<MessageType>OrderFulfillment</MessageType>
29.
'.$xml.'
30.
</AmazonEnvelope>';
31.

32.
sort($url);
33.

34.
$arr   = implode('&',$url);
35.

36.
$sign  = 'POST' . "\n";
37.
$sign.= 'mws.amazonservices.de' . "\n";
38.
$sign.= '/Feeds/'.$param['Version'].'' . "\n";
39.
$sign.= $arr;
40.
if(isset($_GET['DEBUG'])&& $_GET['DEBUG']== "1")echo $amazon_feed;
41.
$signature      = hash_hmac("sha256",$sign,$secret,true);
42.
$httpHeader     =   array();
43.
$httpHeader[]   =   'Transfer-Encoding: chunked';
44.
$httpHeader[]   =   'Content-Type: application/xml';
45.
$httpHeader[]   =   'Content-MD5: ' . base64_encode(md5($amazon_feed,true));
46.
//$httpHeader[]   =   'x-amazon-user-agent: MyScriptName/1.0';
47.
$httpHeader[]   =   'Expect:';
48.
$httpHeader[]   =   'Accept:';
49.

50.
$signature      = urlencode(base64_encode($signature));
51.

52.
$link  = "https://mws.amazonservices.de/Feeds/".$param['Version']."?";
53.
$link.= $arr. "&Signature=" . $signature;
54.

55.
if(!isset($_GET['DEBUG']))
56.
{
57.
    $ch= curl_init($link);
58.
    curl_setopt($ch,CURLOPT_HTTPHEADER,$httpHeader);
59.
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
60.
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
61.
    curl_setopt($ch,CURLOPT_POST,1);
62.
    curl_setopt($ch,CURLOPT_POSTFIELDS,$amazon_feed);
63.
    $response= curl_exec($ch);
64.
    $info= curl_getinfo($ch);
65.
    $errors=curl_error($ch);
66.
    curl_close($ch);
67.

68.
    $resArr= explode("_",$response);
69.
    if(intval($resArr[0])> 0)
70.
    {
71.
        echo $resArr[0];
72.
    }else{
73.
        echo print_r($response);
74.
    }
75.
}
Mitglied: StefanKittel
28.08.2016 um 18:09 Uhr
Hallo,

aktuell überträgt Dein Beispiel die Daten per POST mit CURL.

Hier kommt Dein Feed in die Variable $httpHeader
$httpHeader[] = 'Content-MD5: ' . base64_encode(md5($amazon_feed,true));

Hier wird diese Variable 2x an CURL übergeben
curl_setopt($ch,CURLOPT_HTTPHEADER,$httpHeader);
curl_setopt($ch,CURLOPT_POSTFIELDS,$amazon_feed);

CURL soll POST verwenden
curl_setopt($ch,CURLOPT_POST,1);

Und ab geht die Post
$response= curl_exec($ch);
Bitte warten ..
Mitglied: WPFORGE
28.08.2016 um 18:44 Uhr
Soweit war ich schon:
$httpHeader[] = 'Content-MD5: ' . base64_encode(md5($amazon_feed,true));

$amazon_feed wäre ja dann ein String.
Aber wie bekomme ich das csv File da rein? file_get_contents() wird nicht sein befürchte ich.
Bitte warten ..
Mitglied: StefanKittel
LÖSUNG 28.08.2016 um 18:47 Uhr
Doch, so einfach.
Mit file_get_contents die Datei in einen String einlesen und mit base64_encode für die Verwendung sichern.
Bitte warten ..
Mitglied: 129813
28.08.2016, aktualisiert um 19:15 Uhr
Hi.
Zitat von WPFORGE:

Soweit war ich schon:
$httpHeader[] = 'Content-MD5: ' . base64_encode(md5($amazon_feed,true));

$amazon_feed wäre ja dann ein String.
Aber wie bekomme ich das csv File da rein? file_get_contents() wird nicht sein befürchte ich.
This is only the header-field with the hash of the file not the content field!
You should the download the API Demos:
https://developer.amazonservices.de/doc/bde/feeds/v20090101/php.html
and follow the examples inside the zip file.

Reading is the first key to success!

Regards
Bitte warten ..
Mitglied: WPFORGE
01.09.2016 um 08:27 Uhr
Vielen Dank.
Es war tatsächlich SO einfach;)
Der Code funktioniert jetzt.
Bitte warten ..
Ähnliche Inhalte
PHP

Amazon - "Lagerbestandsdatei" per API

Frage von WPFORGEPHP

Hallo, der Kunde wünscht sich einen dynamischen Abruf der "Lagerbstandsdateien" basierend auf einer Kategorie. Gemeint ist damit, dass er ...

Blogs

Produkt Amazon Artikel - per API abfragen Partnerprogramm

Frage von vServerBlogs4 Kommentare

Hallo, wie ist es möglich sobald ich den Link (Partnerprogramm) hier im Produkt von einem Amazon Produkt angebe, das ...

PHP

Amazon API - Als Händler Bestand für bestimmte Kategorie abrufen

gelöst Frage von WPFORGEPHP7 Kommentare

Hallo, Ziel ist es als Händler, per Amazon API, eine Bestandsliste der eigenen Produkte zu bekommen, die in einer ...

Humor (lol)

Amazon gehacked?

gelöst Frage von eisbeinHumor (lol)7 Kommentare

Guten Morgen! Ich wollte heute mal kurz bei amazon.de shoppen und dann sehen ich das: Sieht nicht sehr vielversprechend ...

Neue Wissensbeiträge
Off Topic
Was als Noob hier mal gesagt werden musste
Information von th30ther vor 1 TagOff Topic4 Kommentare

Moinsen wertes Forum, ich möchte mich an dieser Stelle mal beim Forum generell und bei aqui speziell bedanken! Ich ...

Windows 10
Windows 10 Mai 2019 Update (Version 1903) ist da
Information von kgborn vor 1 TagWindows 107 Kommentare

Nur ein kurzer Infosplitter: Microsoft hat die Nacht (21. Mai 2019) das Funktionsupdate auf Windows 10 Version 1903 freigegeben. ...

E-Mail

Newsletter: Unread News - IT News in Byte Länge

Tipp von franktaylor vor 2 TagenE-Mail11 Kommentare

Hallo, würde gerne auf einen Newsletter hinweisen, den ich heute per Zufall gefunden und mit euch gerne teilen möchte: ...

Outlook & Mail

Outlook 2016 stürzt ab, wenn man ein (at)- Zeichen im Text einer neuen E-Mail schreibt

Tipp von Enriqe vor 2 TagenOutlook & Mail4 Kommentare

Bei uns in der Firma häuften sich die Fälle, bei denen sich Outlook kommentarlos verabschiedet, wenn man ein - ...

Heiß diskutierte Inhalte
Hyper-V
Novell virtualisieren
Frage von spoboeHyper-V21 Kommentare

Hallo zusammen, ich habe absolut keine Ahnung von Novell, aber wir haben hier ein ganz altes Schätzchen (vermutlich Novell ...

Netzwerkmanagement
Gateprotect Firewall - Internetseiten werden teilw. nicht geladen
Frage von KivasFNetzwerkmanagement16 Kommentare

Morgen Zusammen, ich habe ein Problem mit einer Gateprotect Firewall welches mir echt Kopfschmerzen bereitet. Die Firewall hängt an ...

Router & Routing
HP 2920 als Router konfigurieren. Bitte um Unterstützung
gelöst Frage von suedi123Router & Routing16 Kommentare

Liebe Forumsmitglieder, ich habe hier ein Problem, bei welchem ich nicht weiterkomme, weil ich mich zu wenig mit der ...

Server-Hardware
Office 365 vs. eigene IT für kleine Unternehmen
Frage von Schlosser87Server-Hardware15 Kommentare

Hallo Community, Ich bin Geschäftsführer eines kleinen Unternehmens mit 20 Mitarbeitern. Ich muss in den kommenden Wochen eine Entscheidung ...