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

微信Web开发AirKiss配置指南

时间:2023-03-29 21:37:37 PHP

为了少走弯路,硬性条件如下:1.只有经过认证的微信服务号或微信企业号才能拥有此功能。2、拥有自己的云虚拟主机,也就是自己的网站。开始配置:一、公众号的设置1、进入微信公众平台后台,在公众号设置->功能设置界面配置JS接口安全域名,如下图2、完成IP白名单和Server配置,这一步很重要,如图2,网站代码结构如下weixin--||---access_token.php|---airkiss.php//公众号链接到此文件|---jsapi_ticket。php|---jssdk.php|---MP_verify_yfiF3OWtLI4GfhBg.txt//JS接口验证文件,设置JS接口时下载并放在网站上,名称随意3.代码详情1.access_token.php{"access_token":"","expire_time":0}2,airkiss.phpGetSignPackage();?>3、jsapi_ticket.php{"jsapi_ticket":"","expire_time":0}4.jssdk.phpappId=$appId;$this->appSecret=$appSecret;}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]";$timestamp=time();$nonceStr=$this->createNonceStr();//这里的参数顺序要按照键值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="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ08294567";$str="";for($i=0;$i<$length;$i++){$str.=substr($chars,mt_rand(0,strlen($chars)-1),1);}return$str;}privatefunctiongetJsApiTicket(){//jsapi_ticket需要全局存储和更新,以下代码以写入文件为例$data=json_decode($this->get_php_file("jsapi_ticket.php"));if($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;$this->set_php_file("jsapi_ticket.php",json_encode($data));}}else{$ticket=$data->jsapi_ticket;}return$ticket;}私有函数getAccessToken(){//access_token应该全局存储和更新,下面的代码以写入文件为例$data=json_decode($this->get_php_file("access_token.php"));if($data->expire_timehttpGet($url));$access_token=$res->access_token;if($access_token){$data->expire_time=time()+7000;$data->access_token=$access_token;$this->set_php_file("access_token.php",json_encode($data));}}else{$access_token=$data->access_token;}return$access_token;}私有函数httpGet($url){$curl=curl_init();curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);curl_setopt($curl,CURLOPT_TIMEOUT,500);//保证第三方服务器与微信服务器之间数据传输的安全,所有的微信接口都是通过https调用的,必须使用下面2行代码开启ssl安全验证//如果部署过程中这里的代码验证失败,请到http://curl.haxx。se/ca/cacert.pem下载新证书ficate身份证明文件。curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,true);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,2);curl_setopt($curl,CURLOPT_URL,$url);$res=curl_exec($curl);curl_close($curl);返回$res;}privatefunctionget_php_file($filename){returntrim(substr(file_get_contents($filename),15));}privatefunctionset_php_file($filename,$content){$fp=fopen($filename,"w");fwrite($fp,"".$content);fclose($fp);}}调好后会出现如下界面