Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Problemi con signature di Amazon

    Sto perdendo un sacco di ore per venire fuori da una situazione intricatissima. Devo creare una ListOrders, ma continua a darmi questo errore:

    Sender SignatureDoesNotMatch The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

    Ho l'impressione che nč la signature, nč gli altri campi arrivino ad amazon, anche perchč ho testato il tutto qui: https://mws-eu.amazonservices.com/scratchpad/index.html ed inserendo i parametri, gli stessi che ho messo nel codice, il response č corretto.

    Ecco l'ultimo codice che ho provato:

    Codice PHP:
    function call_amazon(){
    $campi["AWSAccessKeyId"] = rawurlencode($this->AWSAccessKeyId);
    $campi["Action"] = 'ListOrders';
    $campi["MarketplaceId.Id.1"] = rawurlencode($this->marketplaceid);
    $campi["SellerId"] = rawurlencode($this->Merchant);            
    $campi["SignatureVersion"] = rawurlencode($this->SignatureVersion);
    $campi["SignatureMethod"] = rawurlencode($this->SignatureMethod);
    $campi["LastUpdatedAfter"] = $this->LastUpdatedAfter;
    $campi["Timestamp"] = gmdate('Y-m-d')."T".gmdate('H:i:s')."Z"
    $campi["Version"] = rawurlencode("2013-09-01");
    $signature $this->crea_signature($campi,$campi["Timestamp"]);
    $campi['Signature'] = urlencode($signature);
    ksort($campi);
    $fields_string '';
    foreach(
    $campi as $key=>$value) {
       
    $fields_string .= $key.'='.$value.'&';
    }
    rtrim($fields_string'&');

    // Elimina la & in fondo alla query string
    $lung strlen($fields_string) - 1;
    $fields_string substr($fields_string0,$lung);
    $ch curl_init($this->endpoint);
                
    curl_setopt($ch,CURLOPT_POSTcount($campi));
    curl_setopt($ch,CURLOPT_POSTFIELDS$fields_string);  
    $output curl_exec($ch);
    print_r(curl_getinfo($ch)); 
    curl_close($ch);
    return 
    simplexml_load_string($output);
    }



    function 
    crea_signature($campi,$ts){  
    $stringa 'POST';
    $stringa .= "\n";
    $stringa .= "mws-eu.amazonservices.com";
    $stringa .= "\n";
    $stringa .= urlencode("/Orders/2013-09-01");
    $stringa .= "\n";
         

    $stringa .= "AWSAccessKeyId=".$campi["AWSAccessKeyId"];
    $stringa .= "&Action=".$campi["Action"];        
    $stringa .= "&LastUpdatedAfter=".$campi["LastUpdatedAfter"];

    $stringa .= "&MarketplaceId.Id.1=".$campi["MarketplaceId.Id.1"];
    $stringa .= "&SellerId=".$campi["SellerId"];
    $stringa .= "&SignatureMethod=".$campi["SignatureMethod"];
    $stringa .= "&SignatureVersion=".$campi["SignatureVersion"];
                    
    $stringa .= "&Timestamp=".$ts;
    $stringa .= "&Version=".$campi["Version"];

    $s hash_hmac('sha256'str_replace(' '''$stringa), $this->secrettrue);
    $sig =  base64_encode($s);

    return 
    $sig;

    Premetto che il valore dei campi passati č quello corretto. Sapete aiutarmi e tirarmi fuori da questo casino? Grazie!
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

  2. #2
    up
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.