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
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);
}
}