phpamazon-web-servicesamazon-product-advertising-api

Getting error in Amazon product API sample code (PHP)


I downloaded Product Advertising PHP Soap Library and was going through the sample codes. I configured the value of 'AWS_API_KEY', 'AWS_API_SECRET_KEY', 'AWS_ASSOCIATE_TAG', 'AWS_ANOTHER_ASSOCIATE_TAG' in sampleSettings.php file. I'm getting the below mentioned error in my browser while trying to access 'sampleItemSearch.php'.

SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl' : Start tag expected, '<' not found

I tried to take help help from Link: https://forums.aws.amazon.com/thread.jspa?messageID=270273 but it did not work.

Note: I have tried to run the below url in browser and got the following output:

$request="http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AssociateTag=ASSOCIATETAG01-20&AWSAccessKeyId=MY_ACCESS_KEY_ID&Operation=ItemSearch&Version=2011-08-01&SearchIndex=Books&Keywords=harry%20potter&Timestamp=2013-04-10T12%3A44%3A42.000Z&Signature=ASasd5645AdSG878asdHsaHJ9YTefl1F6i0%3D";

Please suggest what I should do.


Solution

  • I solved it at last. Below mentioned code is working fine.

        AWSAccessKeyId   = "*******************";
        $SecretAccessKey = "******************************";
        $AssociateTag    = "***************";
    
        $ItemId = '****'; //10 or 13 digit isbn
        $Timestamp = gmdate("Y-m-d\TH:i:s\Z");
        $Timestamp = str_replace(":", "%3A", $Timestamp);
        $ResponseGroup = "ItemAttributes,Images";
        $ResponseGroup = str_replace(",", "%2C", $ResponseGroup);
    
    
        $String = "AWSAccessKeyId=$AWSAccessKeyId&AssociateTag=$AssociateTag&IdType=ISBN&ItemId=$ItemId&Operation=ItemLookup&ResponseGroup=$ResponseGroup&SearchIndex=Books&Service=AWSECommerceService&Timestamp=$Timestamp&Version=2011-08-01";
    
        $String = str_replace("\n", "", $String);
    
        $Prepend = "GET\nwebservices.amazon.com\n/onca/xml\n";
        $PrependString = $Prepend . $String;
    
        $Signature = base64_encode(hash_hmac("sha256", $PrependString, $SecretAccessKey, True));
    
        $Signature = str_replace("+", "%2B", $Signature);
        $Signature = str_replace("=", "%3D", $Signature);
    
        $BaseUrl = "http://webservices.amazon.com/onca/xml?";
        $SignedRequest = $BaseUrl . $String . "&Signature=" . $Signature;
    
        $XML  = simplexml_load_file($SignedRequest);
    
        print_r($xml); // output