基于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 相关文章推荐
开发大型PHP项目的方法
Oct 09 PHP
配置支持SSI
Nov 25 PHP
PHP Ajax中文乱码问题解决方法
Feb 27 PHP
sql注入与转义的php函数代码
Jun 17 PHP
学习php开源项目的源码指南
Dec 21 PHP
php操作xml入门之cdata区段
Jan 23 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
实例讲解PHP设计模式编程中的简单工厂模式
Feb 29 PHP
php实现登陆模块功能示例
Oct 20 PHP
PHP实现正则匹配所有括号中的内容
Jun 22 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 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
Terran历史背景
2020/03/14 星际争霸
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
传智播客学习之java 反射
2009/11/22 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
javascript实现简单页面倒计时
2021/03/02 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python中偏函数partial用法实例分析
2015/07/08 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
python hook监听事件详解
2018/10/25 Python
python3注册全局热键的实现
2020/03/22 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
小学语文教学反思
2014/02/10 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
服装设计师求职信
2014/06/04 职场文书
通信工程求职信
2014/07/16 职场文书
党员作风建设自查报告
2014/10/23 职场文书
推荐信范文大全
2015/03/27 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers