基于thinkPHP3.2实现微信接入及查询token值的方法


Posted in PHP onApril 18, 2017

本文实例讲述了基于thinkPHP3.2实现微信接入及查询token值的方法。分享给大家供大家参考,具体如下:

1.在con.fig文件里面配置TOKEN,APPID,APPSECRET值

2.控制器WeixinController代码:

<?php
/**
 * 微信父类控制器
 * @author Songle
 *
 */
namespace Weixin\Controller;
use Think\Controller;
class WeixinController extends Controller {
  private $last_time=null;
  private $appid=null;
  private $appsecret=null;
  function __construct(){
    parent::__construct();
    $token=C('TOKEN');
    $this->appid=C('APPID');
    $this->appsecret=C('APPSECRET');
    //获取微信服务器GET请求的4个参数
    $signature = I('signature');
    $timestamp = I('timestamp');
    $nonce = I('nonce');
    $echostr = I('echostr');
    if (! empty ( $echostr) && ! empty ( $signature ) && ! empty ($nonce )) {
      //定义一个数组,存储其中3个参数,分别是timestamp,nonce和token
      $tempArr = array($nonce,$timestamp,$token);
      //进行排序
      sort($tempArr,SORT_STRING);
      //将数组转换成字符串
      $tmpStr = implode($tempArr);
      //进行sha1加密算法
      $tmpStr = sha1($tmpStr);
      //判断请求是否来自微信服务器,对比$tmpStr和$signature
      if($tmpStr == $signature)
      {
        echo $echostr;
      }
      exit();
    }
  }
  /**
   * 获取tooken值
   */
  public function getTooken(){
    $this->last_time = 1448012924;
    $access_token = "填写上一次的token值"; //需要替换成自己的
    if(time() > ($this->last_time + 7200))
    {
      //GET请求的地址
      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->appsecret}";
      $access_token_Arr = $this->https_request($url);
      $this->last_time = time();
      return $access_token_Arr['access_token'];
    }
    return $access_token;
  }
  //https请求(支持GET和POST)
  public function https_request($url,$data = null)
  {
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    if(!empty($data))
    {
      curl_setopt($ch,CURLOPT_POST,1); //模拟POST
      curl_setopt($ch,CURLOPT_POSTFIELDS,$data); //POST内容
    }
    $outopt = curl_exec($ch);
    curl_close($ch);
    $outopt = json_decode($outopt,true);
    return $outopt;
  }
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
文章推荐系统(三)
Oct 09 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
Mar 15 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
Jun 03 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
May 10 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
php和vue配合使用技巧和方法
May 09 PHP
PHP递归删除多维数组中的某个值
Apr 17 #PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 #PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 #PHP
PHP中快速生成随机密码的几种方式
Apr 17 #PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 #PHP
关于php 高并发解决的一点思路
Apr 16 #PHP
PHP无限极分类函数的实现方法详解
Apr 15 #PHP
You might like
多文件上载系统完整版
2006/10/09 PHP
Session的工作方式
2006/10/09 PHP
用PHP读取RSS feed的代码
2008/08/01 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
php中strtotime函数用法详解
2014/11/15 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
什么是封装
2013/03/26 面试题
普通院校学生的自荐信
2013/11/27 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
农村党员干部承诺书
2015/05/04 职场文书
读书笔记格式
2015/07/02 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
MySQL一些常用高级SQL语句
2021/07/03 MySQL
java如何实现socket连接方法封装
2021/09/25 Java/Android
vue自定义右键菜单之全局实现
2022/04/09 Vue.js