基于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 相关文章推荐
WIN98下Apache1.3.14+PHP4.0.4的安装
Oct 09 PHP
用PHP和ACCESS写聊天室(三)
Oct 09 PHP
php用正则表达式匹配中文实例详解
Nov 06 PHP
PHP创建桌面快捷方式的实例代码
Feb 17 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
php中heredoc与nowdoc介绍
Dec 25 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 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
php中文本数据翻页(留言本翻页)
2006/10/09 PHP
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
分页栏的web标准实现
2011/11/01 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
vue实现扫码功能
2020/01/17 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
python获取一组汉字拼音首字母的方法
2015/07/01 Python
常见的python正则用法实例讲解
2016/06/21 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
Python实现汇率转换操作
2020/05/03 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
百思买美国官网:Best Buy
2016/07/28 全球购物
Ellos丹麦:时尚和服装在线
2016/09/19 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
计算机专业学生求职信分享
2013/12/15 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript