thinkPHP微信分享接口JSSDK用法实例


Posted in PHP onJuly 07, 2017

本文实例讲述了thinkPHP微信分享接口JSSDK用法。分享给大家供大家参考,具体如下:

首先在数据库中添加access_token表:

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for access_token
-- ----------------------------
DROP TABLE IF EXISTS `access_token`;
CREATE TABLE `access_token` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `access_token` char(64) NOT NULL COMMENT '令牌-唯一标识',
 `expires_time` varchar(64) DEFAULT NULL COMMENT '过期时间',
 `ticket` char(64) NOT NULL COMMENT '临时票据',
 `ticket_expires_time` varchar(64) DEFAULT NULL COMMENT '过期的票据时间',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='token缓存表';
/**
* 添加微信分享接口
* 第一步:access token
*/
public function getAccessToken(){
  $appid = '你的appid'; //获取用户唯一凭证
  $secret = '你的secret'; //用户唯一凭证密钥
  $time = time()+7000; //当前时间+2小时等于过期时间
  if (!$token) {
    $res = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' .$appid.'&secret='. $secret);
    $res = json_decode($res, true);
    $token = $res['access_token'];
    $model = D('access_token'); //把获取的token存储到数据库中
    if($token){
      $data = array(
      'access_token' => $token,
      'expires_time' => $time
      );
      $data = $model->add($data); //把获得的token存储到数据库中
    }
  }
  return $token;
}
/**
* 添加微信分享接口
* 第二步:用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket
*/
public function getJsapiTicket(){
  $time = time()+7000; //当前时间+2小时等于过期时间
  $map['ticket_expires_time'] = array('gt',time());
  $res = D('access_token')->where('ticket_expires_time')->field('ticket')->find();
  if($res){
    $ticket = $res['ticket'];
    $result['result'] = $ticket; //没查询到符合条件的
    jsonpReturn($result);
  } else{
    $token = $this->getAccessToken();
    $res = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$token."&type=jsapi");
    $res = json_decode($res, true);
    $ticket = $res['ticket'];
    // ticket不能频繁的访问接口来获取,在每次获取后,我们把它保存到数据库中。
    $model = D('access_token'); //把获取的ticket存储到数据库中
    if($ticket){
      $data = array(
      'access_token' => $token,
      'expires_time' => $time,
      'ticket' => $ticket,
      'ticket_expires_time' => $time
      );
      $data = $model->add($data); //把获得的token存储到数据库中
    }
    $result['result'] = $ticket; //没查询到符合条件的
    jsonpReturn($result);
  }
}

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

PHP 相关文章推荐
PHP与已存在的Java应用程序集成
Oct 09 PHP
php中的一个中文字符串截取函数
Feb 14 PHP
php SQL Injection with MySQL
Feb 27 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
学习php设计模式 php实现策略模式(strategy)
Dec 07 PHP
PHP书写格式详解(必看)
May 23 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
phpmyadmin下载、安装、配置教程
May 16 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
laravel框架创建授权策略实例分析
Nov 22 PHP
微信开发之获取JSAPI TICKET
Jul 07 #PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 #PHP
一个实用的php验证码类
Jul 06 #PHP
万能的php分页类
Jul 06 #PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 #PHP
php文件上传类的分享
Jul 06 #PHP
PHP图片水印类的封装
Jul 06 #PHP
You might like
第三节 定义一个类 [3]
2006/10/09 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
PDO::getAttribute讲解
2019/01/28 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
传智播客学习之java 反射
2009/11/22 Javascript
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python中List.index()方法的使用教程
2015/05/20 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
浅谈Python 递归算法指归
2019/08/22 Python
Python基于WordCloud制作词云图
2019/11/29 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
简单的JAVA编程面试题
2013/03/19 面试题
总经理秘书的岗位职责
2013/12/27 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
家长给老师的感谢信
2015/01/20 职场文书
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android
Win10 Anaconda安装python-pcl
2022/04/29 Servers