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 相关文章推荐
header()函数使用说明
Nov 23 PHP
PHP中for循环语句的几种变型
Mar 16 PHP
基于php下载文件的详解
Jun 02 PHP
thinkphp使用phpmailer发送邮件的方法
Nov 24 PHP
PHP实现PDO的mysql数据库操作类
Dec 12 PHP
php文件夹的创建与删除方法
Jan 24 PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
laravel实现上传图片的两种方式小结
Oct 12 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 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变量范围介绍
2012/10/15 PHP
分享PHP header函数使用教程
2013/09/05 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
Python实现数据库编程方法详解
2015/06/09 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
python super的使用方法及实例详解
2019/09/25 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
Python Django view 两种return的实现方式
2020/03/16 Python
python爬虫基础之urllib的使用
2020/12/31 Python
如何理解transaction事务的概念
2015/05/27 面试题
程序员岗位职责
2013/11/11 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
2015年女工委工作总结
2015/07/27 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android