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高手?学会“懒惰”的编程
Dec 05 PHP
php+ajax导入大数据时产生的问题处理
Jun 11 PHP
php对象和数组相互转换的方法
May 12 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 PHP
Yii中表单用法实例详解
Jan 05 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
May 17 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
详谈php静态方法及普通方法的区别
Oct 04 PHP
Laravel模型间关系设置分表的方法示例
Apr 21 PHP
PHP利用递归函数实现无限级分类的方法
Mar 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
学习使用PHP数组
2006/10/09 PHP
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
Python常见数据类型转换操作示例
2019/05/08 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
Python识别处理照片中的条形码
2020/11/16 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
上课迟到检讨书
2014/01/19 职场文书
制作部班长职位说明书
2014/02/26 职场文书
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android