実行したいAPIは以下公式ページの「商品検索」APIとなります。
https://7af.omni7.jp/af_static_site/API1.html
こちらを実行するにあたり、以下記載のソースを作成しましたが、このようなエラーが返ってきています。
{"ApiError":{"ApiErrorStatus":"NotAuthenticated","ApiErrorMessage":"リクエストパラメータに誤りがあります。(Signature)"}}
エラーとなっていSignatureの作成方法は以下セブンアフィリエイトAPI公式に記載されている内容に沿ってプログラムを作成しましたが、間違っている箇所が見つからない状態です。
https://7af.omni7.jp/af_static_site/static_063.html
PHP
1<?php 2 3$secret_key = '自身の秘密鍵'; 4$timestamp = gmdate('Y-m-d\TH:i:s\Z'); 5//署名を作成 6$params = Array(); 7$params['ApiUserId'] = '自身のApiUserId'; 8$params['Timestamp'] = $timestamp; 9$params['ResponseFormat'] = 'JSON'; 10$params['KeywordIn'] = '4902506352651'; 11ksort($params); 12//リクエストパラメータをパイプ「|」で繋ぐ 13$str = 'GET|' . 'https://7af-api.omni7.jp/af_api/affiliate/rest/GetShoppingCategory'; 14//リクエストパラメータを「key=value」の組に分解 15foreach ($params as $key => $value) { 16$str .= '|' . $key . '=' . $value; 17} 18//できた文字列をUTF-8でURLエンコードする 19$enc_str = rawurlencode($str); 20 21echo $enc_str; 22//API秘密鍵を用いてHMAC-SHA256で署名 23$hash = hash_hmac('sha256', $enc_str, $secret_key); 24//できた署名をBase64でエンコードする 25$signature = base64_encode($hash); //←できた署名情報 26 27//リクエストURL組み立て 28$url = 'https://7af-api.omni7.jp/af_api/affiliate/rest/GetShoppingCategory?'; 29$url .= 'ApiUserId=' . $params['ApiUserId'] . '&'; 30$url .= 'Timestamp=' . $params['Timestamp'] . '&'; 31$url .= 'ResponseFormat=' . $params['ResponseFormat'] . '&'; 32$url .= 'KeywordIn=' . $params['KeywordIn'] . '&'; 33$url .= 'Signature=' . $signature; 34$json = file_get_contents($url);
なぜエラーが返ってくるのか検討はつきますでしょうか?
大変お手数ですがご助力いただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー