Antworten auf deine Fragen:
Neues Thema erstellen

File Senden php - Amazon Api

AxelM

Nicht mehr ganz neu hier

Hallo,
ich vermute es ist so einfach, dass es schon wieder kompliziert ist.
Es geht darum eine CSV an die Amazon API zu senden.
Ich hab mal gelernt, dass man ein File als GET oder POST Feld versendet.
Hier scheint das aber anders zu sein.

Ich habe einen Beispielcode, welcher einen xml String versendet (siehe unten). Und auf dieser Basis muss das mit dem File auch funktionieren.
Der Code tut auch, nur das XML ist offensichtlich Mist ;)
Aber wie bekomme ich das rein?

Das Ganze scheint so einfach zu sein, dass es niemand für nötig hält ein Wort drüber zu verlieren ;)

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

$secret= $amazonSecretKey;

$url= array();
foreach ($paramas $key=> $val){

    $key= str_replace("%7E","~",rawurlencode($key));
    $val= str_replace("%7E","~",rawurlencode($val));
    $url[]= "{$key}={$val}";
}

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

sort($url);

$arr   = implode('&',$url);

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

$signature      = urlencode(base64_encode($signature));

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

if(!isset($_GET['DEBUG']))
{
    $ch= curl_init($link);
    curl_setopt($ch,CURLOPT_HTTPHEADER,$httpHeader);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($ch,CURLOPT_POST,1);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$amazon_feed);
    $response= curl_exec($ch);
    $info= curl_getinfo($ch);
    $errors=curl_error($ch);
    curl_close($ch);

    $resArr= explode("_",$response);
    if(intval($resArr[0])> 0)
    {
        echo $resArr[0];
    }else{
        echo print_r($response);
    }
}
 

AxelM

Nicht mehr ganz neu hier

Die Library sieht gar nicht übel aus ;)
Allerdings scheint Sie nur den Versand von XML vorzusehen (zumindest im Feeds bereich) Ich hab aber ein Flatfile.
Elchen Schalter ich umlegen muss, dass ich das csv schikcen kann, weiß ich schon... nur wieder die gleiche Frage.. wie bekomm ich das flatfile in den String?
 

AxelM

Nicht mehr ganz neu hier

Danke. Der Code funktioniert jetzt.
In meinem Fall habe ich die Tabgetrennte CSV ohnehin generieren müssen und hab den String einfach übergeben.

Es war wirklich SO einfach.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.619
Beiträge
1.538.363
Mitglieder
67.540
Neuestes Mitglied
Alex Weidner
Oben