セブンネットショッピングAPIのSignatureの付け方(PHP版)

ユーザーがあまり多くないであろうセブンネットショッピング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;
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>