古詩詞大全網 - 藝術簽名 - 不用php怎麽調用微信jssdk

不用php怎麽調用微信jssdk

使用姿勢

^ajax(Common.ServerUrl?+?"GetWX.php",?{

data:?{

Type:?"config",

url:?location.href.split('#')[0]

},

dataType:?'json',

type:?'get',

timeout:?5000,

success:?function(data)?{

wx.config({

debug:?true,?//?開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。

appId:?'……',?//?必填,公眾號的唯壹標識

timestamp:?data.timestamp,?//?必填,生成簽名的時間戳

nonceStr:?data.nonceStr,?//?必填,生成簽名的隨機串

signature:?data.signature,?//?必填,簽名,見附錄1

jsApiList:?["getLocation"]?//?必填,需要使用的JS接口列表,所有JS接口列表見附錄2

});

}

})

wx.ready(function()?{

wx.getLocation({

type:?'wgs84',?//?默認為wgs84的gps坐標,如果要返回直接給openLocation用的火星坐標,可傳入'gcj02'

success:?function(res)?{

var?latitude?=?res.latitude;?//?緯度,浮點數,範圍為90?~?-90

var?longitude?=?res.longitude;?//?經度,浮點數,範圍為180?~?-180。

plus2.storage.setItem("latitude",?latitude);

plus2.storage.setItem("longitude",?longitude);

}

});

});

服務端GetWX.PHP

<?php

include?"lib/Cache.php";

define($APPID,?"……");

define($SECRET,?"……")

if($_GET['Type']?==?"access_token"){//?echo?getAccess_token();

}

else?if($_GET['Type']?==?"jsapi_ticket"){//?echo?getJsapi_ticket();

}

else?if($_GET['Type']?==?"config"){

$jsapi_ticket?=?getJsapi_ticket();

$nonceStr?=?"x".rand(10000,100000)."x";//隨機字符串

$timestamp?=?time();//時間戳

$url?=?$_GET['url'];

$signature?=?getSignature($jsapi_ticket,$nonceStr,?$timestamp,?$url);

$result?=?array("jsapi_ticket"=>$jsapi_ticket,?"nonceStr"=>$nonceStr,"timestamp"=>$timestamp,"url"=>$url,"signature"=>$signature);

echo?json_encode($result);

}

function?getSignature($jsapi_ticket,$noncestr,?$timestamp,?$url){

$string1?=?"jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."&timestamp=".$timestamp."&url=".$url;

$sha1?=?sha1($string1);

return?$sha1;

}

function?getJsapi_ticket(){

$cache?=?new?Cache();

$cache?=?new?Cache(7000,?'cache/');//需要創建cache文件夾存儲緩存文件。

//從緩存從讀取鍵值?$key?的數據

$jsapi_ticket?=?$cache?->?get("jsapi_ticket");

$access_token?=?getAccess_token();

//如果沒有緩存數據

if?($jsapi_ticket?==?false)?{

$access_token?=?getAccess_token();

$url?=?'/cgi-bin/ticket/getticket';?

$data?=?array('type'=>'jsapi','access_token'=>$access_token);?

$header?=?array();?

$response?=?json_decode(curl_/cgi-bin/token';?

$data?=?array('grant_type'=>'client_credential','appid'=>$APPID,'secret'=>$SECRET);?

$header?=?array();?

$response?=?json_decode(curl_https($url,?$data,?$header,?5));?

$access_token?=?$response->access_token;

//寫入鍵值?$key?的數據

$cache?->?put("access_token",?$access_token);

}

return?$access_token;

}

/**?curl?獲取?https?請求?

*?@param?String?$url?請求的url?

*?@param?Array?$data?要發送的數據?

*?@param?Array?$header?請求時發送的header?

*?@param?int?$timeout?超時時間,默認30s?

*/?

function?curl_https($url,?$data=array(),?$header=array(),?$timeout=30){?

$ch?=?curl_init();?

curl_setopt($ch,?CURLOPT_SSL_VERIFYPEER,?false);?//?跳過證書檢查?

curl_setopt($ch,?CURLOPT_URL,?$url);?

curl_setopt($ch,?CURLOPT_HTTPHEADER,?$header);?

curl_setopt($ch,?CURLOPT_POST,?true);?

curl_setopt($ch,?CURLOPT_POSTFIELDS,?http_build_query($data));?

curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?true);?

curl_setopt($ch,?CURLOPT_TIMEOUT,?$timeout);?

$response?=?curl_exec($ch);?

if($error=curl_error($ch)){?

die($error);?

}?

curl_close($ch);?

return?$response;?

}?

>

Cache.php

<?phpclass?Cache?{

private?$cache_path;

//path?for?the?cache

private?$cache_expire;

//seconds?that?the?cache?expires

//cache?constructor,?optional?expiring?time?and?cache?path

public?function?Cache($exp_time?=?3600,?$path?=?"cache/")?{

$this?->?cache_expire?=?$exp_time;

$this?->?cache_path?=?$path;

}

//returns?the?filename?for?the?cache

private?function?fileName($key)?{

return?$this?->?cache_path?.?md5($key);

}

//creates?new?cache?files?with?the?given?data,?$key==?name?of?the?cache,?data?the?info/values?to?store

public?function?put($key,?$data)?{

$values?=?serialize($data);

$filename?=?$this?->?fileName($key);

$file?=?fopen($filename,?'w');

if?($file)?{//able?to?create?the?file

fwrite($file,?$values);

fclose($file);

}?else

return?false;

}

//returns?cache?for?the?given?key

public?function?get($key)?{

$filename?=?$this?->?fileName($key);

if?(!file_exists($filename)?||?!is_readable($filename))?{//can't?read?the?cache

return?false;

}

if?(time()?<?(filemtime($filename)?+?$this?->?cache_expire))?{//cache?for?the?key?not?expired

$file?=?fopen($filename,?"r");

//?read?data?file

if?($file)?{//able?to?open?the?file

$data?=?fread($file,?filesize($filename));

fclose($file);

return?unserialize($data);

//return?the?values

}?else

return?false;

}?else

return?false;

//was?expired?you?need?to?create?new

}

}?>