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 相关文章推荐
php4的彩蛋
Oct 09 PHP
默默简单的写了一个模板引擎
Jan 02 PHP
轻松修复Discuz!数据库
May 03 PHP
PHP学习 运算符与运算符优先级
Jun 15 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 PHP
PHP实现生成推广海报的方法详解
Mar 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常用函数的用法详解
2013/05/10 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
jquery 防止表单重复提交代码
2010/01/21 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
js简易版购物车功能
2017/06/17 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
vue+element实现打印页面功能
2019/05/20 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
Django 添加静态文件的两种实现方法(必看篇)
2017/07/14 Python
python程序封装为win32服务的方法
2021/03/07 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
python3排序的实例方法
2020/10/20 Python
PHP面试题集
2016/12/18 面试题
《长城》教学反思
2014/02/14 职场文书
C++程序员求职信范文
2014/04/14 职场文书
小学教师年度个人总结
2015/02/05 职场文书
2015感人爱情寄语
2015/02/26 职场文书
sql注入报错之注入原理实例解析
2022/06/10 MySQL
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript