在网站根目录下新建js目录,放入以下2个文件
js/jssdk.php
js/share.js
jssdk.php 代码如下
$url=$_GET['url'];//-06-27
classJSSDK{
private$appId;
private$appSecret;
private$url;//-06-27
publicfunction__construct($appId,$appSecret,$url){
$this->appId=$appId;
$this->appSecret=$appSecret;
$this->url=$url;//-06-27
}
publicfunctiongetSignPackage(){
$jsapiTicket=$this->getJsApiTicket();
//注意URL一定要动态获取,不能hardcode.
$protocol=(!empty($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!=='off'||
$_SERVER['SERVER_PORT']==443)?"https://":"http://";
//$url="$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";//-06-27
$url=$this->url;//-06-27
$timestamp=time();
$nonceStr=$this->createNonceStr();
//这里参数的顺序要按照key值ASCII码升序排序
$string="jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
$signature=sha1($string);
$signPackage=array(
"appId"=>$this->appId,
"nonceStr"=>$nonceStr,
"timestamp"=>$timestamp,
"url"=>$url,
"signature"=>$signature,
"rawString"=>$string
);
return$signPackage;
}
privatefunctioncreateNonceStr($length=16){
$chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$str="";
for($i=0;$i
$str.=substr($chars,mt_rand(0,strlen($chars)-1),1);
}
return$str;
}
privatefunctiongetJsApiTicket(){
//jsapi_ticket应该全局存储与更新,以下代码以写入到文件中做示例
$data=json_decode(file_get_contents("jsapi_ticket.json"));
if($data->expire_time
$accessToken=$this->getAccessToken();
//如果是企业号用以下URL获取ticket
//$url="https://qyapi./cgi-bin/get_jsapi_ticket?access_token=$accessToken";
$url="https://api./cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
$res=json_decode($this->httpGet($url));
$ticket=$res->ticket;
if($ticket){
$data->expire_time=time()+7000;
$data->jsapi_ticket=$ticket;
$fp=fopen("jsapi_ticket.json","w");
fwrite($fp,json_encode($data));
fclose($fp);
}
}else{
$ticket=$data->jsapi_ticket;
}
return$ticket;
}
privatefunctiongetAccessToken(){
//access_token应该全局存储与更新,以下代码以写入到文件中做示例
$data=json_decode(file_get_contents("access_token.json"));
if($data->expire_time
//如果是企业号用以下URL获取access_token
//$url="https://qyapi./cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
$url="https://api./cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
$res=json_decode($this->httpGet($url));
$access_token=$res->access_token;
if($access_token){
$data->expire_time=time()+7000;
$data->access_token=$access_token;
$fp=fopen("access_token.json","w");
fwrite($fp,json_encode($data));
fclose($fp);
}
}else{
$access_token=$data->access_token;
}
return$access_token;
}
privatefunctionhttpGet($url){
$curl=curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_TIMEOUT,500);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,true);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,true);//https
curl_setopt($curl,CURLOPT_URL,$url);
$res=curl_exec($curl);
curl_close($curl);
return$res;
}
}
$jssdk=newJSSDK("AAPID","appSecret",$url);
$signPackage=$jssdk->GetSignPackage();
$tmp=json_encode(array('appId'=>$signPackage["appId"],'timestamp'=>$signPackage["timestamp"],
'nonceStr'=>$signPackage["nonceStr"],'signature'=>$signPackage["signature"],'url'=>$signPackage["url"]));
$callback=$_GET['callback'];
echo$callback.'('.$tmp.')';
exit;
?>
share.js代码如下
url=location.href;
$.ajax({
type:"get",
url:"../js/jssdk.php?url="+url,
dataType:"jsonp",
jsonp:"callback",
jsonpCallback:"success_jsonpCallback",
success:function(data){
wx.config({
appId:data.appId,
timestamp:data.timestamp,
nonceStr:data.nonceStr,
signature:data.signature,
jsApiList:['chackJsApi','onMenuShareTimeline','onMenuShareAppMessage',
'onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone']
});
},
error:function(data){
alert("连接失败!");
}
});
wx.ready(function(){
varshareData={
title:title,
desc:desc,
link:url,
imgUrl:img,
success:function(res){
//分享成功
},
cancel:function(res){
alert('已取消分享');
}
};
wx.onMenuShareAppMessage(shareData);
wx.onMenuShareTimeline(shareData);
wx.onMenuShareQQ(shareData);
wx.onMenuShareWeibo(shareData);
wx.onMenuShareQZone(shareData);
});
部署方式 页面底部添加如下代码
varurl='你的域名';//用户要分享的网址
vartitle='您的标题';//分享的标题
varimg='您的图片地址';//分享的图片
vardesc='您的描述信息';//分享的描述信息
微信分享自定义图标大小限制_网站微信自定义分享代码 可以自定义分享图片标题描述(支持https)...