Example #1
0
 /**
  * 商品検索をリクエストするendpointのURLを生成
  * 
  * @param array $my_params 検索APIのパラメータを指定
  * @param string $secret_access_key シークレットキー
  * @return string 商品検索をリクエストするURL
  */
 public function getUrl($my_params, $secret_access_key)
 {
     // リクエストを作成
     $baseurl = 'http://webservices.amazon.co.jp/onca/xml';
     $params = array();
     $params['Service'] = 'AWSECommerceService';
     $params['Version'] = '2013-08-01';
     $params = array_merge($params, $my_params);
     // Timestamp パラメータを追加
     // - 時間の表記は ISO8601 形式、タイムゾーンは UTC(GMT)
     $params['Timestamp'] = gmdate('Y-m-d\\TH:i:s\\Z');
     // パラメータの順序を昇順に並び替え
     ksort($params);
     // canonical string を作成
     $canonical_string = '';
     foreach ($params as $k => $v) {
         $canonical_string .= '&' . urlencode_rfc3986($k) . '=' . urlencode_rfc3986($v);
     }
     $canonical_string = substr($canonical_string, 1);
     // 署名を作成
     // - 規定の文字列フォーマットを作成
     // - HMAC-SHA256 を計算
     // - BASE64 エンコード
     $parsed_url = parse_url($baseurl);
     $string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}";
     $signature = base64_encode(hash_hmac('sha256', $string_to_sign, $secret_access_key, true));
     // URL を生成
     // - リクエストの末尾に署名を追加
     $url = $baseurl . '?' . $canonical_string . '&Signature=' . urlencode_rfc3986($signature);
     return $url;
 }
function get_xml_url($params)
{
    global $access_secret;
    $baseurl = 'http://ecs.amazonaws.jp/onca/xml';
    ksort($params);
    $canonical_string = '';
    foreach ($params as $k => $v) {
        $canonical_string .= '&' . urlencode_rfc3986($k) . '=' . urlencode_rfc3986($v);
    }
    $canonical_string = substr($canonical_string, 1);
    $parsed_url = parse_url($baseurl);
    $string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}";
    $signature = base64_encode(hash_hmac('sha256', $string_to_sign, $access_secret, true));
    $url = $baseurl . '?' . $canonical_string . '&Signature=' . urlencode_rfc3986($signature);
    return $url;
}
 /**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index(Request $request)
 {
     // RFC3986 形式で URL エンコードする関数
     function urlencode_rfc3986($str)
     {
         return str_replace('%7E', '~', rawurlencode($str));
     }
     $response = NULL;
     if ($request['keyword']) {
         // ベースとなるリクエストURL
         $baseurl = 'https://app.rakuten.co.jp/services/api/IchibaItem/Search/20140222';
         // リクエストパラメータの作成
         $params = array();
         $params['format'] = 'json';
         //レスポンスをXML形式
         $params['keyword'] = $request['keyword'];
         //$_REQUEST['keyword'];  // 任意のキーワード。文字コードは UTF-8
         // $params['genreId'] = '559887';
         //$params['shopCode'] = 'rakuten24';
         $params['applicationId'] = '1006734213224224132';
         //アプリID/デベロッパーID
         //$params['affiliateId']  = '自分のアフィリエイトID入力'; //アフィリエイトID
         //$params['version']    = '2013-08-05';
         $params['hits'] = 10;
         // 1~30
         // パラメータを昇順に並び替え
         ksort($params);
         // canonical string を作成
         $canonical_string = '';
         foreach ($params as $k => $v) {
             $canonical_string .= '&' . urlencode_rfc3986($k) . '=' . urlencode_rfc3986($v);
         }
         // 先頭の'&'を除去
         $canonical_string = substr($canonical_string, 1);
         // リクエストURL を作成
         $url = $baseurl . '?' . $canonical_string;
         $contents = file_get_contents($url);
         $data = json_decode($contents, true);
         $response['keyword'] = $data;
         $response['word'] = $request;
     }
     return view('select/index')->with('indata', $response);
     //
 }
Example #4
0
function get_url($param)
{
    ksort($param);
    $canonical_string = '';
    foreach ($param as $k => $v) {
        $canonical_string .= '&' . urlencode_rfc3986($k) . '=' . urlencode_rfc3986($v);
    }
    $canonical_string = substr($canonical_string, 1);
    $parsed_url = parse_url(URL);
    $string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}";
    $signature = base64_encode(hash_hmac('sha256', $string_to_sign, SEC, true));
    // 返り値のURLにアクセスするとXMLが取得できます。
    return URL . '?' . $canonical_string . '&Signature=' . urlencode_rfc3986($signature);
}