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 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
那些年一起学习的PHP(三)
Mar 22 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
PHP按指定键值对二维数组进行排序的方法
Dec 22 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
php查找字符串中第一个非0的位置截取
Feb 27 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
Aug 14 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 header函数分析详解
2011/08/06 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
Python使用filetype精确判断文件类型
2017/07/02 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
如何基于python实现脚本加密
2019/12/28 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
Linux的主要特性
2014/10/06 面试题
电信专业应届生自荐信
2013/09/28 职场文书
工程力学专业毕业生求职信
2013/10/06 职场文书
人民调解员培训方案
2014/06/05 职场文书
大学生团员个人总结
2015/02/14 职场文书
毕业证明书
2015/06/19 职场文书
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL