我们之前学习过wechatsdk的使用,不过是基于easyWechat的php插件实现的。具体可以参考:https://www.wj0511.com/site/detail.html?id=331这里我们使用原生php实现微信SDK-禁止微信分享1:导入需要的js二:通过config接口注入权限验证配置wx.config({debug:true,//开启debug模式,所有调用的API返回值都会被alertclient端,如果想查看传入的参数,可以在PC端打开,参数信息会通过log打印,PC端只会打印。appId:'',//必填,公众号的唯一标识timestamp:,//必填,生成签名的时间戳nonceStr:'',//必填,生成签名的随机字符串signature:'',//必填,签名jsApiList:[]//必填,JSint列表需要使用的接口});生成签名的步骤如下:1:获取微信全局唯一接口公众号调用access_token的凭证调用以下接口获取access_tokenhttps://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET获取参数说明:appid:微信公众号的唯一标识appIdsecret:微信公众号的appsecret可以根据上面的接口从微信公众号获取全局唯一接口调用凭证access_token,接口返回结果如下:{"access_token":"ACCESS_TOKEN","expires_in":7200}2:根据access_token获取jsapi_ticket,调用如下接口获取jsapi_tickethttps://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapiget参数说明:access_token:access_tokentype:上述接口获取的类型,这里指定jsapi根据上述接口获取jsapi_ticket,接口返回结果如下:{"errcode":0,"errmsg":"ok","ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA","expires_in":7200待签名0}3:根据获取的Akettic参数签名后的jSCII代码,stpiname从小到大排序,使用URL键值对格式(即key1=value1&key2=value2...)拼接成字符串,然后用sha1加密生成签名3:通过验证成功后ready接口,写在ready中我们需要的微信sdk接口wx.ready(function(){//ready方法会在config信息校验通过后执行,所有接口调用都必须在config接口后获取o获得结果。config是客户端的异步操作,所以如果需要在页面加载时调用相关接口,必须在ready函数中调用相关接口,以保证正确执行。对于用户触发时调用的接口,直接调用即可,不需要放在ready函数中。});四:根据上面的描述,这里以禁止微信分享sdk为例:1:PHP端:publicfunctionactionTicket(){//开启sessionsession_start();//appId$appId='wx73d0c47a64aa5315';//秘密$appSecret='aba2793c10623350f6aeee5a728099d3';if(!isset($_SESSION['ticket'])){//获取微信全局唯一接口调用凭证access_token$result=$this->getAccessToken($appId,$appSecret);$accessToken=$result['access_token'];//获取jsapi_ticket$getTicket=$this->getTicket($accessToken);$ticket=$getTicket['ticket'];$_SESSION['ticket']=$ticket;}//jsapi_ticket(公众号调用微信JS接口的临时ticket)$ticket=$_SESSION['ticket'];//当前时间戳$timestamp=time();//随机字符串$noncestr=$this->getRandCode();//当前网址$url=$this->getUrl();$params=['jsapi_ticket'=>$ticket,'timestamp'=>$timestamp,'noncestr'=>$noncestr,'url'=>$url,];$options=$this->urlParams($params);//获取签名$signature=sha1($options);//RenderappId,timestamp,noncestr,signaturetopagereturn$this->render('ticket',['appId'=>$appId,'timestamp'=>$timestamp,'noncestr'=>$noncestr,'signature'=>$signature,]);}/**获取jsapi_ticket*/publicfunctiongetTicket($accessToken){$params=['access_token'=>$accessToken,'type'=>'jsapi',];$urlParams=$this->urlParams($params);$ticketUrl='https://api.weixin.qq.com/cgi-bin/ticket/getticket?'.$url参数;$result=$this->http_curl($ticketUrl);returnjson_decode($result,true);}/**获取微信全局唯一接口调用凭证access_token*/publicfunctiongetAccessToken($appId,$appSecret){$params=['grant_type'=>'client_credential','appid'=>$appId,'secret'=>$appSecret,];$urlParams=$this->urlParams($params);$accessUrl='https://api.weixin.qq.com/cgi-bin/token?'.$url参数;$result=$this->http_curl($accessUrl);returnjson_decode($result,true);}/**获取随机码*/functiongetRandCode($num=16){$array=array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','v','z','1','2','3','4','5','6','7','8','9','0',);$tmpstr='';$max=count($array);for($i=1;$i<=$num;$i++){$key=rand(0,$max-1);//'A'->$array[0]$tmpstr.=$array[$key];}return$tmpstr;}/**curl接口调用*/publicfunctionhttp_curl($url,$data=null){$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);curl_setopt($curl,CURLOPT_POST,1);curl_setopt($curl,CURLOPT_POSTFIELDS,$data);$result=curl_exec($curl);curl_close($curl);返回$结果;}/**字符串连接*/publicfunctionurlParams($params){ksort($params);重置($参数);$选项='';foreach($paramsas$key=>$value){$options.=$key.'='。$值。'&';}$options=rtrim($options,'&');return$options;}/**获取当前url*/publicfunctiongetUrl(){//获取协议类型$protocalPort=isset($_SERVER['SERVER_PORT'])&&$_SERVER['SERVER_PORT']=='443'?'https://':'http://';//获取当前执行ScriptURL$phpSelf=$_SERVER['PHP_SELF']?$_SERVER['PHP_SELF']:$_SERVER['SCRIPT_NAME'];$pathInfo=isset($_SERVER['PATH_INFO'])?$_SERVER['PATH_INFO']:'';$queryString=isset($_SERVER['QUERY_STRING'])?$_SERVER['QUERY_STRING']:'';$relateUrl=isset($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:$phpSelf。(!empty($queryString)?'?'.$queryString:$pathInfo);$url=$protocalPort.(isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'')。$relateUrl;返回$url;}2:前端:这样我们就实现了使用微信的原生phpSDK
