ユーザーがあまり多くないであろうセブンネットショッピングAPI。
アマゾンとか楽天にはない面白い商品があったりして使いがいがあるのですが、公式ドキュメントの少なさもさることながら、ユーザーによる解説も少なくて、なかなかとっかかりにくい感じがします。
特にセブンネットショッピングのAPIは、リクエスト時にAmazonのAPIのようにSignatureが必要になるのですが、Signatureを生成するだけでも結構一苦労なのですよね。(公式ドキュメントの解説ページ)
最初にリクエストするURLを書いてからSignatureをつけるというやりかたを解説をしているサイトが見当たらなかったので、[PHP] Amazon Product Advertising API で認証付きリクエストを送る方法まとめを参考に、セブンネットショッピング版を作ってみました。
$url = 'http://api.7netshopping.jp/ws/affiliate/rest/SearchProduct'
.'?ApiUserId='.$api_key
.'&Version=2010-08-01'
.'&Timestamp='.gmdate('Y-m-d\TH:i:s\Z')
.'&CategoryCode=books'
.'&IsbnCode=.$isbn_code
みたいなURLを作ってadd_signatureを通せばSignatureがついたURLが返って来るはずです。
function add_signature($url){
$secret_key = "YOUR SECRET KEY";
$url_array = parse_url($url);
parse_str($url_array["query"], $param_array);
ksort($param_array);
$str = 'GET|http://'.$url_array["host"].$url_array["path"];
foreach($param_array as $key => $value) $str .= '|'.$key.'='.$value;
$signature = base64_encode( hash_hmac("sha256", rawurlencode($str), $secret_key, true) );
return $url.'&Signature='.$signature;
}