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 和 COM
Oct 09 PHP
为查询结果建立向后/向前按钮
Oct 09 PHP
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
ThinkPHP控制器详解
Jul 27 PHP
PHP常用技巧汇总
Mar 04 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 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
提升PHP执行速度全攻略(上)
2006/10/09 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
php实现记事本案例
2020/10/20 PHP
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
js闭包实例汇总
2014/11/09 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
Python制作简单的网页爬虫
2015/11/22 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
Python内置类型性能分析过程实例
2020/01/29 Python
信号生成及DFT的python实现方式
2020/02/25 Python
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
市场营销毕业生自荐信
2013/11/23 职场文书
工厂厂长的职责
2013/12/12 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
消防安全承诺书
2014/05/22 职场文书
安全员岗位职责
2015/02/10 职场文书
家庭贫困证明
2015/06/16 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js
微信小程序实现轮播图指示器
2022/06/25 Javascript