參數 | 名稱 | 型態 | 描述 |
dataType | 資料格式 | string |
指定SDM API 請求與回應的資料格式。
|
request | 請求 | string |
請求內容,產生步驟如下:
|
signature | 簽章 | string | 用來檢驗API使用者身份與request資料之完整性。 signature計算方式請參考 signature - 身份與資料完整性驗證 。 |
response=responseValue&signature=signatureValue
$request='{ "request":{ "header":{ "partner":"channel-0004ac09be84ebb292b14178b36581f2", "method":"hotels", "time":"2014-05-15 18:03:15", "token":"token-fffd89d7f9bbd7b0937d411327d30885" }, "body":{ } } }'; $request=urlencode($request); $signature=hash_hmac("sha256",$request,$api_key);
if(hash_hmac("sha256",$response,$api_key)==$signature){ //身份與資料完整性驗證通過 }else{ //身分或資料完整性驗證錯誤 }
$partner="channel-0004ad29be84ebb292b14178bagh81f2"; $api_key="fQZoJw86vJmnHNGZGS53esd2DQg7BwD8";
$request=array(); $request["request"]=array(); $request["request"]["header"]=array(); $request["request"]["header"]["partner"]=$partner; $request["request"]["header"]["method"]="hotels"; $request["request"]["header"]["time"]="2014-06-02 12:00:02"; $request["request"]["header"]["token"]="token-ae04ad29be84ebb292b14178bagh92d3"; $request["request"]["body"]=array();
$request=json_encode($request);
$request=urlencode($request);
$signature=hash_hmac("sha256",$request,$api_key);
$toURL="https://sdm_api_qazwsxedc.com/api/index.php"; $post=array( "dataType"=>"JSON", "request"=>$request, "signature"=>$signature ); $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$toURL); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($post)); $result=curl_exec($ch); curl_close($ch);
$temp=explode("&",$result); $response=substr($temp[0],9); $signature=substr($temp[1],10);
if(hash_hmac("sha256",$response,$api_key)==$signature){ //身份與資料完整性驗證通過 }else{ //身分或資料完整性驗證錯誤 }
//將response進行urldecode,再進行json_decode $data=json_decode(urldecode($response_str),true); /* $data["response"] api回覆的response,格式請參考api文檔 $data["response"]["header"]["returnCode"] 回傳代碼,可用來判斷api執行是否成功 $data["response"]["header"]["returnMessage"] 回傳的訊息 */ //範例:列出所有旅館名稱 $hotels=$data["response"]["body"]["hotels"]; for($i=0;$i<count($hotels);$i++){ echo $hotels[$i]["name"].","; }