当前位置: 首页 > 后端技术 > PHP

微信自定义分享支持https(php)

时间:2023-03-30 03:25:39 PHP

直接进入代码目录(jssdk在网站上更改目录)jssdk/jssdk.phpjssdk/share.jsjssdk.php代码如下appId=$appId;$this->appSecret=$appSecret;$this->url=$url;//2017-06-27}publicfunctiongetSignPackage(){$jsapiTicket=$this->getJsApiTicket();//注意URL必须是动态获取的,不能硬编码。$protocol=(!empty($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!=='off'||$_SERVER['SERVER_PORT']==443)?“https://”:“http://”;//$url="$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";//2017-06-27$url=$this->url;//2017-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"=>$字符串);返回$signPackage;}privatefunctioncreateNonceStr($length=16){$chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$str="";对于($i=0;$i<$length;$i++){$str.=substr($chars,mt_rand(0,strlen($chars)-1),1);}返回$str;}privatefunctiongetJsApiTicket(){//jsapi_ticket要全局存储和更新,下面代码以写入文件为例$data=json_decode(file_get_contents("jsapi_ticket.json"));如果($data->expire_timegetAccessToken();//如果是企业账号使用以下URL获取ticket//$url="https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";$url="https://api.weixin.qq.com/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_timehttpGet($url));$access_token=$res->access_token;如果($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;}返回$access_token;}私有函数httpGet($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);//httpscurl_setopt($curl,CURLOPT_URL,$url);$res=curl_exec($curl);curl_close($curl);返回$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;varurl=encodeURIComponent(window.location.href);//去标签名$.ajax({type:"get",url:"../jssdk/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,成功:函数(res){//分享成功},cancel:function(res){alert('分享取消');}};wx.onMenuShareAppMessage(shareData);wx.onMenuShareTimeline(shareData);wx.onMenuShareQQ(shareData);wx.onMenuShareWeibo(shareData);wx.onMenuShareQZone(shareData);});在部署方式页面底部添加如下代码。在引用jweixin-1.0.0.js之前,重新设置define和require。ps:请在jquery之后导入