Amazon APIの認証をPHPなSOAPで対応する
Amazon APIの認証をPHPなSOAPで対応する
なんかSOAPを使ってたのがあったので、いちおう(RESTな記事しか見かけなかったので)。
たぶんこんな感じ。
SOAPのリクエスト部分は手抜き(元々使ってるはずなので、いらないでしょ?)。
$wsdl = 'http://webservices.amazon.com/AWSECommerceService/JP/AWSECommerceService.wsdl';
$soap_options = array();
$access_key = '';
$secure = ''; // 追加
$associate = '';
$action = 'ItemSearch';
$request = array(
);
$params = array(
'AWSAccessKeyId' => $access_key,
'AssociateTag' => $associate,
'Request' => $request,
);
$soap = new SoapClient($wsdl, $soap_options);
// ヘッダ追加:ここから
// create signature
$timestamp = gmstrftime('%Y-%m-%dT%TZ', $_SERVER['REQUEST_TIME']);
$signature = base64_encode(hash_hmac('sha256', ($action . $timestamp), $secure, true));
// create soap header
$namespace = 'http://security.amazonaws.com/doc/2007-01-01/';
$header_data = array(
'AWSAccessKeyId' => $access_key,
'Timestamp' => $timestamp,
'Signature' => $signature,
);
$headers = array();
foreach ($header_data as $name => $val) {
$headers[] = new SoapHeader($namespace, $name, $val);
}
$soap->__setSoapHeaders($headers);
// ヘッダ追加:ここまで
$soap->$action($params);