• 公众号开发完整页面1


      1 <?php
      2 namespace HomeController;
      3 use ThinkController;
      4 class IndexController extends Controller {
      5     public function index(){
      6         //获得参数 signature  nonce  token timestamp echostr
      7         $timestamp=$_GET['timestamp'];
      8         $nonce=$_GET['nonce'];
      9         $token='weixin';
     10         $signature=$_GET['signature'];
     11         $echostr = $_GET['echostr'];
     12         //形成数组,然后按字典序排序
     13         $array=array($timestamp,$nonce,$token);
     14         sort($array);
     15         //拼接成字符串,加密,然后与signature进行校验
     16         $str = sha1( implode( $array ) );
     17         if($str  == $signature && $echostr){
     18         header('content-type:text');//新浪SAE没有实名验证加了这一句
     19            //第一次接入weixin api接口的时候,需要验证,第二次就不用了
     20             echo $echostr;
     21             exit;
     22         }else{
     23             $this->reponseMsg();
     24         }
     25 
     26     }
     27 
     28     public function reponseMsg(){
     29         //1.获取到微信推送过来post数据(xml格式)
     30         $postArr=$GLOBALS['HTTP_RAW_POST_DATA'];
     31         //2.处理消息类型,并设置回复类型和内容
     32         //打开微信开发者文档-消息管理-接收事件文档
     33         //用此函数将xml标签转换为对象
     34         $postObj=simplexml_load_string($postArr);
     35            //判断该数据包是否是订阅的事件推送
     36          if(strtolower($postObj->MsgType)=='event'){
     37             //如果是订阅 subscribe 事件
     38             if(strtolower($postObj->Event)=='subscribe'){
     39                 //回复用户消息(单图文)
     40         $arr=array(
     41           array(
     42             'title'=>'欢迎关注我的读书笔记!',
     43             'description'=>"千江有水千江月,万里无云万里天",
     44             'picUrl'=>'http://l1230205.applinzi.com/gzh/Wx/image/timg.jpg',
     45             'url'=>'http://www.hao123.com',
     46           ),
     47         );
     48         //实例化模型
     49         $indexModel=new  HomeModelIndexModel;
     50         $indexModel->responseSubscribe($postObj,$arr);
     51             }
     52 
     53     //如果是重扫二维码
     54     if(strtolower($postObj->Event)=='scan'){
     55       if($postObj->EventKey == 2000){
     56         //如果是临时二维码扫码
     57         $tmp='临时二维码欢迎你';
     58       }//2000为临时二维码代码中设置的参数
     59       if($postObj->EventKey == 3000){
     60         //如果是永久二维码扫码
     61         $tmp='永久二维码欢迎你';
     62       }//3000为临时二维码代码中设置的参数
     63       $arr=array(
     64         array(
     65           'title'=>$tmp,
     66           'description'=>"千江有水千江月,万里无云万里天",
     67           'picUrl'=>'http://l1230205.applinzi.com/gzh/Wx/image/timg.jpg',
     68           'url'=>'http://www.hao123.com',
     69         ),
     70       );
     71       //实例化模型
     72       $indexModel=new  HomeModelIndexModel;
     73       $indexModel->responseSubscribe($postObj,$arr);
     74 
     75     } ////如果是重扫二维码结束
     76 
     77 
     78 
     79        //点击菜单拉取消息时的事件推送开始,下面回复为单文本模式
     80       if(strtolower($postObj->Event)=='click'){
     81         //如果是自定义中菜单中的event->click
     82         if(strtolower($postObj->EventKey)=='item1'){
     83          $content="这是item1菜单的事件推送";
     84         }
     85        if(strtolower($postObj->EventKey)=='songs'){
     86           $content="这是歌曲菜单的事件推送";
     87        }
     88          //实例化模型
     89        $indexModel=new  HomeModelIndexModel;
     90        $indexModel->responseText($postObj,$content);
     91 
     92       }
     93        //点击菜单拉取消息时的事件推送,跳转的
     94       if(strtolower($postObj->Event)=='view'){
     95         //如果是自定义中菜单中的event->view
     96         $content="跳转的链接是".$postObj->EventKey;
     97         //因为页面直接跳转所以没有推送
     98          //实例化模型
     99        $indexModel=new  HomeModelIndexModel;
    100        $indexModel->responseText($postObj,$content);
    101 
    102       }//点击菜单拉取消息时的事件推送结束
    103         }
    104     //用户发送tuwen2关键字的时候,回复多个单图文
    105       //注意:进行多图文发送时,子图文个数不能超过10个
    106       if( strtolower($postObj->MsgType) == 'text' && trim($postObj->Content)=='tuwen2'){
    107       //从数据库中得到
    108         $arr=array(
    109           array(
    110             'title'=>'百度一下哟!',
    111             'description'=>"有什么问题你尽管问百度,它啥都懂",
    112             'picUrl'=>'https://www.baidu.com/img/bdlogo.png',
    113             'url'=>'http://www.hao123.com',
    114           ),
    115           array(
    116             'title'=>'幕课网程序员的梦工厂',
    117             'description'=>"幕课网程序员的梦工厂",
    118             'picUrl'=>'https://www.baidu.com/img/bdlogo.png',
    119             'url'=>'http://www.imooc.com',
    120           ),
    121           array(
    122             'title'=>'给我你的QQ号',
    123             'description'=>"你QQ号多少啊?",
    124             'picUrl'=>'https://www.baidu.com/img/bdlogo.png',
    125             'url'=>'http://www.qq.com',
    126           ),
    127         );
    128        //实例化模型
    129        $indexModel=new  HomeModelIndexModel;
    130        $indexModel->responseNews($postObj,$arr);
    131     }else{
    132       //trim是为了防止输入误打的时候不匹配
    133       //关键字回复
    134      switch( trim($postObj->Content) ){
    135        case 1:
    136        $content='您输入的数字是1';
    137        break;
    138        case 2:
    139        $content='您输入的数字是2';
    140        break;
    141        case 3:
    142        $content='您输入的数字是3';
    143        break;
    144        case '有问题':
    145        //在回复的文本中,投放超链接
    146        $content="<a href='http://www.baidu.com'>有问题你找百度啊!</a>";
    147        break;
    148        case '好想你':
    149        $content='你还是想别人吧';
    150        break;
    151        default:
    152        $content='还在测试中......';
    153        break;
    154        case '天气':
    155        //心知天气API接口调用
    156        $ch=curl_init();
    157        $city='沈阳';
    158        $url='https://api.seniverse.com/v3/weather/now.json?key=cgc69plib0upjlfa&language=zh-Hans&unit=c&location='.urlencode($city);
    159 
    160         //3.设置参数
    161         curl_setopt($ch,CURLOPT_URL,$url);
    162         curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    163         $res=curl_exec($ch);
    164         if(curl_errno($ch)){
    165         var_dump(curl_error($ch));
    166         }
    167          //5.关闭
    168           curl_close($ch);
    169           //如果出现错误,打印错误
    170           $arr=json_decode($res,true);
    171          $content=$city.'的天气是:'.$arr['results']['0']['now']['text'].',气温是'.$arr['results']['0']['now']['temperature'];
    172       //心知天气API接口调用结束
    173        break;
    174 
    175 
    176      }
    177 
    178        //实例化模型
    179        $indexModel=new  HomeModelIndexModel;
    180        $indexModel->responseText($postObj,$content);
    181 
    182     }//if end
    183 
    184 } // responseMsg end
    185 
    186 
    187 /*
    188  $url 接口的url
    189  $type 请求类型
    190  $res 返回数据类型
    191  $arr  post请求参数
    192 
    193 */
    194 //curl采集器
    195 public function http_curl($url,$type='get',$res='json',$arr=''){
    196 //1.初始化curl
    197 $ch=curl_init();
    198 //2.设置curl的参数
    199 curl_setopt($ch,CURLOPT_URL,$url);
    200 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    201   if($type=='post'){
    202     curl_setopt($ch,CURLOPT_POST,1);
    203     curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);
    204   }
    205 //3.采集
    206 $output=curl_exec($ch);
    207 //4.关闭
    208 curl_close($ch);
    209 //如果返回的值,是json格式,则转换成数组
    210 if($res=='json'){
    211   if(curl_errno($ch)){
    212     //请求失败,返回错误信息
    213     return curl_error($ch);
    214   }else{
    215     //请求成功
    216   return json_decode($output,true);
    217 }
    218 }
    219 }//http_curl end
    220 
    221 
    222 
    223 
    224 
    225 //获取ACCESS_TOKEN
    226 function getWxAccessToken01(){
    227   //1.请求url地址
    228 //$appid='wxa8f829e8827fd059';
    229 //$appsecret='92faffeb1f85c8240713a222969c8d50';
    230   //换成测试账号的
    231   $appid='wx4bba2f41aab513ef';
    232   $appsecret='ce622479d17be1b6bc25edd86ffdf43f';
    233 
    234 $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
    235 //2.初始化
    236 $ch=curl_init;
    237 //3.设置参数
    238 curl_setopt($ch,CURLOPT_URL,$url);
    239 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    240 //4.调用接口
    241 $res=curl_exec($ch);
    242 if(curl_errno($ch)){
    243   var_dump(curl_error($ch));
    244 }
    245 
    246 //5.关闭
    247 curl_close($ch);
    248 //如果出现错误,打印错误
    249 
    250 $arr=json_decode($res,true);
    251 var_dump($arr);
    252 
    253 }//getWxAccessToken end
    254 //新浪SAE上传此段代码在不报错的情况下返回NULL,最后通过在线接口调试工具,获取了access_token
    255 
    256 
    257 
    258 //获取微信服务器地址IP
    259 function getWxServerIp(){
    260   $accessToken="11_iDDcEkGcHnwvBmaFbkFd-vPgBNWTcfcByJpagSbClKKQJAGeq5ruVFUibBPWj0n1WzY68asfOqzoSbJGaWa3f-2hv_QgS0rNF2ItduaOFLFTjl-e6r6Ob3s9y-ANWMdAEAQZP";
    261   $url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=".$accessToken;
    262   $ch = curl_init();
    263   curl_setopt($ch, CURLOPT_URL,$url);
    264   curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    265   $res = curl_exec($ch);
    266   curl_close($ch);
    267   if(curl_errno($ch)){
    268     var_dump(curl_error($ch));
    269   }
    270   $arr = json_decode($res,true);
    271   echo "<pre>";
    272   var_dump( $arr );
    273   echo "</pre>";
    274 } //getWxServerIp end;
    275 
    276 
    277 
    278 
    279 
    280 /*//封装的post方法的curl
    281   function curl_post($url, $arr_data){
    282    $post_data = http_build_query($url_data);
    283    $ch = curl_init();
    284     curl_setopt($ch, CURLOPT_URL, $url);
    285     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    286     curl_setopt($ch, CURLOPT_POST, 1);
    287     curl_setopt($ch,  CURLOPT_POSTFLELDS, $post_data);
    288     $data = curl_exec($ch);
    289     curl_close($ch);
    290     echo $data;
    291   }
    292 
    293 */
    294 
    295 //微信群发接口开发
    296  function sendMsgAll(){
    297   //1.获取全局access_token
    298   $access_token='12_p6aGdDKhtDbb5Reww-L8N7yYMJaMzr_mRajDf3VWPdYIkphJk_Kz8jUOWQTZdth0vMIdi2E971EjmsBgIcjnUUDfw-KKPKeyHTcXhEerCJ_IeVuAqh0rrT1x0FIJW1i0oOK1Ws7tuZMeYai7GPFiAIAKTJ';
    299   $url="https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=".$access_token;
    300   //返回Null接口未获权限
    301 
    302   //2.组装群发接口数据array
    303   //单文本  //多图文失败了,因为media_id不对
    304  $array=array(
    305       'touser'=>'oYimv0dNGcVxYrr_noub4cavTgF0', //微信用户的openID,来自于测试账号里面的微信号
    306       'text'=>array('content'=>'you are very good!'),//文本内容
    307       'msgtype'=>'text',
    308        );
    309 
    310   //3.将array->json
    311    $postJson=json_encode($array);
    312    var_dump($postJson);
    313    echo "<hr/>";
    314   //4.curl
    315    $res=$this->http_curl($url,$type='post',$res='json',$postJson);
    316    var_dump($res);
    317  } //sendMsgAll end
    318 
    319    //【目前测试没有成功的一种写法】
    320   //返回存储调用的$access_token的方法【重要的】  ------返回空白
    321     public function getWxAccessToken(){
    322       //将access_token 存在session或者cookie中
    323       if($_SESSION['access_token'] && $_SESSION['expire_time']>time()){
    324        //如果access_token在session并没有过期
    325         return $_SESSION['access_token'];
    326 
    327       }else{
    328        //如果access_token不存在或者已经过期,重新取
    329         //换成测试账号的
    330        $appid='wx4bba2f41aab513ef';
    331        $appsecret='ce622479d17be1b6bc25edd86ffdf43f';
    332        $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
    333        $res=$this->http_curl($url,'get','json');
    334        $access_token=$res['access_token'];
    335        //将重新获取到的access_token存到session
    336        $_SESSION['access_token']=$access_token;
    337        //设置过期时间
    338        $_SESSION['expire_time']=time()+7200;
    339        return $access_token;
    340       }
    341       }//getWxAccessToken end
    342 
    343 
    344 
    345    //微信菜单管理接口
    346     Public function definedItem(){
    347     header('content-type:text/html; charset=utf-8');
    348     //创建微信菜单
    349     //目前微信接口的调用方式都是通过curl post/get
    350     $access_token='12_p6aGdDKhtDbb5Reww-L8N7yYMJaMzr_mRajDf3VWPdYIkphJk_Kz8jUOWQTZdth0vMIdi2E971EjmsBgIcjnUUDfw-KKPKeyHTcXhEerCJ_IeVuAqh0rrT1x0FIJW1i0oOK1Ws7tuZMeYai7GPFiAIAKTJ';
    351     $url="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;
    352     $postArr=array(
    353     'button'=>array(
    354       array(
    355         'name'=>urlencode('菜单一'),//urlencode为了正确的编码格式
    356         'type'=>'click',
    357         'key'=>'item1',
    358       ),//第一个一级菜单
    359       array(
    360         'name'=>urlencode('菜单二'),
    361         'sub_button'=>array(
    362           array(
    363           'name'=>urlencode('歌曲'),
    364           'type'=>'click',
    365           'key'=>'songs',
    366           ),//第一个二级菜单
    367           array(
    368           'name'=>urlencode('电影'),
    369           'type'=>'view',
    370           'url'=>'http://www.baidu.com',
    371           ),//第二个二级菜单
    372         ),
    373       ),//第二个一级菜单
    374       array(
    375           'name'=>urlencode('菜单三'),
    376           'type'=>'view',
    377           'url'=>'http://www.qq.com',
    378       )//第三个一级菜单),
    379 ),
    380 
    381     );
    382     $postJson=urldecode(json_encode($postArr));//反转回来
    383     $res=$this->http_curl($url,'post','json',$postJson);
    384     var_dump($res);
    385 
    386    }//definedItem end
    387 
    388   //模板消息接口,测试账号做,一般消费之后的推送
    389    function sendTemplateMsg(){
    390     //可以申请到15个模板
    391     //一个账号的当日的模板消息次数不超过10万次
    392      //1.获取access_token
    393     $access_token='12__LIFZkJPeWj1Dvfn_GsT0Gb19WMBZZgdYCmG5Yxh6VpWxdPgtevmH2b5nayY1i3AjHgp3P5VuyM07H3YN0xudlt0R6I6n8bKcIeuX5OkqBsdURpAkAPVTr7R-z1UXZ2ERCY9WbVu9dzFQOIbCQOgAIAPDB';
    394     $url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$access_token;//模板跳转链接
    395     //2.组装数组
    396     $array=array(
    397           'touser'=>'oYimv0dNGcVxYrr_noub4cavTgF0',
    398           'template_id'=>'LGHacJgQ4RepAwGLfaQ-BwFt_pYDvJxMzQrwCJJHlcQ',//测试号里生成的模板id
    399           'url'=>'http://www.qq.com',
    400           'data'=>array(
    401           'name'=>array('value'=>'云散明月谁点缀?天容海色本澄清','color'=>"#C71585"),
    402           'money'=>array('value'=>1000,'color'=>"#C71585"),
    403           'date'=>array('value'=>date('Y-m-d H:i:s'),'color'=>"#C71585")
    404         ),
    405   );
    406      //3.将数组转换成json
    407       $postJson=json_encode($array);
    408      //4.调用curl函数
    409      $res=$this->http_curl($url,'post','json',$postJson);
    410      var_dump($res);
    411 
    412    } //sendTemplateMsg end
    413    //网页授权接口  // 并未实现,报错40163
    414     //获取用户的的openid
    415    function getBaseInfo(){
    416     //1.获取到code
    417     $appid="wx4bba2f41aab513ef";
    418     $redirect_uri=urlencode("http://l1230205.applinzi.com/gzh/wx.php/Index/getUserOpenId");
    419   //必须和测试号网页授权获取用户基本信息里面的修改中的地址一致,否则会报错
    420     $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
    421     //跳转至getUserOpenId()
    422       header('Location:'.$url);exit;
    423 
    424 
    425     }//getBaseInfo end
    426 
    427   function  getUserOpenId(){
    428     //2.获取到网页授权的access_token,不同于上面获取的全局access_token
    429     $appid="wx4bba2f41aab513ef";
    430     $appsecret="ce622479d17be1b6bc25edd86ffdf43f";
    431     $code=$_GET['code'];
    432     $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";
    433     //3.获取用户的openid
    434     $res=$this->http_curl($url,'get');
    435     var_dump($res);
    436     $openid=$res['openid'];
    437     //time();
    438     //1,2,3 假如允许用户一天参加3次,就给保存登陆的时间,次数
    439     //$this->display('index.tpl');//参加活动的页面
    440     //菜单栏中提供的网址http://l1230205.applinzi.com/gzh/wx.php/Index/getBaseInfo
    441 
    442     } //getUserOpenId end
    443 
    444   //获取用户的详细授权信息
    445   function getUserDetail(){
    446    //1.获取到code
    447    $appid="wx4bba2f41aab513ef";
    448    $redirect_uri=urlencode("http://l1230205.applinzi.com/gzh/wx.php/Index/getUserInfo");
    449  //必须和测试号网页授权获取用户基本信息里面的修改中的地址一致,否则会报错l1230205.applinzi.com
    450    $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect";
    451    //跳转至getUserOpenId()
    452      header('Location:'.$url);exit;
    453 
    454    }//getUserDetail end
    455 
    456    function getUserInfo(){
    457    //2.获取到网页授权的access_token
    458    $appid="wx4bba2f41aab513ef";
    459    $appsecret="ce622479d17be1b6bc25edd86ffdf43f";
    460    $code=$_GET['code'];
    461    $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";
    462    //3.获取用户的openid
    463    $res=$this->http_curl($url,'get');
    464    $access_token=$res['access_token'];
    465    $openid=$res['openid'];
    466    //拉取用户的详细信息
    467    $url="https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
    468    $res=$this->http_curl($url);
    469    var_dump($res);
    470 
    471 
    472    }//getUserInfo end
    473   //生成带参数的临时二维码
    474    function getTimeQrCode(){
    475      header('content-type:text/html;charset=utf-8');
    476      //1.获取ticket票据
    477      //2.全局票据access_token网页授权access_token 威信js-SDK jsapi_ticket临时的这三个都有过期时间
    478      $access_token="12_EDjuJXo7AKFzpxOWcgis-F_EaXNT6ITQt6ZBbMgMUhuqySF-5aD5bUv-p1TPT63oTIy3uXSDVMDIbnrcpzdFXgfqxHGZbN2_-lzlZ8MKUQ3dskH3B7wpkr1aQymY459MjXYfioZJJW7FNYnLYMNjAHAIWX";
    479      $url="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$access_token;
    480     $postArr=array(
    481         'expire_seconds'=>604800,//24*60*60
    482         'action_name'=>"QR_SCENE",
    483         'action_info'=>array(
    484            'scene'=>array('scene_id'=>2000),
    485         ),
    486     );
    487     $postJson=json_encode($postArr);
    488     $res=$this->http_curl($url,'post','json',$postJson);
    489     $ticket=$res['ticket'];
    490     //2.使用ticket获取二维码图片
    491      $url="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
    492      //上面二维码的地址已经生成了,直接展示
    493      echo '临时二维码';
    494      echo "<img src='".$url."'  />";
    495    }//getQrCode end
    496 
    497    //生成带参数的永久二维码
    498     function getForeverQrCode(){
    499        header('content-type:text/html;charset=utf-8');
    500       //1.获取ticket票据
    501       //2.全局票据access_token网页授权access_token 微信js-SDK jsapi_ticket临时的这三个都有过期时间
    502       $access_token="12_EDjuJXo7AKFzpxOWcgis-F_EaXNT6ITQt6ZBbMgMUhuqySF-5aD5bUv-p1TPT63oTIy3uXSDVMDIbnrcpzdFXgfqxHGZbN2_-lzlZ8MKUQ3dskH3B7wpkr1aQymY459MjXYfioZJJW7FNYnLYMNjAHAIWX";
    503       $url="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$access_token;
    504      $postArr=array(
    505          'action_name'=>"QR_LIMIT_SCENE",
    506          'action_info'=>array(
    507             'scene'=>array('scene_id'=>3000),
    508          ),
    509      );
    510      $postJson=json_encode($postArr);
    511      $res=$this->http_curl($url,'post','json',$postJson);
    512      $ticket=$res['ticket'];
    513      //2.使用ticket获取二维码图片
    514       $url="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
    515       //上面二维码的地址已经生成了,直接展示
    516       echo '永久二维码';
    517       echo "<img src='".$url."'  />";
    518     }//getQrCode end
    519    //获取JsApiTicket票据的方法
    520      function getJsApiTicket(){
    521        //如果session中保存
    522        if($_SESSION['jsapi_ticket_expire_time']>time() && $_SESSION['jsapi_ticket']){
    523          $jsapi_ticket=$_SESSION['jsapi_ticket'];
    524        }else{
    525          //$access_token=$this->getWxAccessToken();因为获取失败 不好用 所以测试账号获得
    526          $access_token="12_EDjuJXo7AKFzpxOWcgis-F_EaXNT6ITQt6ZBbMgMUhuqySF-5aD5bUv-p1TPT63oTIy3uXSDVMDIbnrcpzdFXgfqxHGZbN2_-lzlZ8MKUQ3dskH3B7wpkr1aQymY459MjXYfioZJJW7FNYnLYMNjAHAIWX";
    527          $url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi";
    528          $res=$this->http_curl($url);
    529          $jsapi_ticket=$res['ticket'];
    530          $_SESSION['jsapi_ticket']=$jsapi_ticket;
    531          $_SESSION['jsapi_ticket_expire_time']=time()+7000;
    532        }
    533        return $jsapi_ticket;
    534      }//getJsApiTicket end
    535    //获取noncestr随机码
    536    function getRandCode($num=16){
    537         $array=array(
    538           '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',
    539           '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',
    540           '0','1','2','3','4','5','6','7','8','9'
    541         );
    542         $tmpstr='';
    543         $max=count($array);
    544         for($i=1;$i<=$num;$i++){
    545           $key=rand(0,$max-1);
    546           $tmpstr.=$array[$key];
    547         }
    548         return $tmpstr;
    549 
    550 
    551    } //getRandCode end
    552     //微信分享
    553      function shareWx(){
    554        //1.获取jsapi_ticket票据
    555        $jsapi_ticket=$this->getJsApiTicket();
    556        $timestamp=time();
    557        $noncestr=$this->getRandCode();
    558        $url='http://l1230205.applinzi.com/gzh/wx.php/Index/shareWx';
    559        //2.获取signature
    560        $signature="jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."&timestamp=".$timestamp."&url=".$url;
    561        $signature=sha1($signature);
    562        $this->assign('name','imooc');
    563        $this->assign('timestamp',$timestamp);
    564        $this->assign('noncestr',$noncestr);
    565        $this->assign('signature',$signature);
    566        $this->display('share');
    567      }//shareWx end
    568 
    569 
    570 
    571 }//calss end

    以上代码是【/gzh/Wx/Home/Controller/IndexController.class.php】页面内容

  • 相关阅读:
    mac下如何全量删除短信内容
    git log --oneline --graph的读法
    nginx bind() to 0.0.0.0:**** failed (13: Permission denied)
    nginx安装和配置
    pycharm的插件pylint报错:java.lang.Throwable: Write-unsafe context! Model changes are allowed from write-safe contexts only. Please ensure you're using invokeLater/invokeAndWait with a correct modality stat
    python编码规范、js编码规范及IDE的检查插件pylint/eslint等
    Flask 在 Debug 模式下初始化2次
    python的globals()使用
    删除整张表数据但是空间没有减少
    DBCC DBREINDEX重建索引提高SQL Server性能
  • 原文地址:https://www.cnblogs.com/lxj0205/p/9396366.html
Copyright © 2020-2023  润新知