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制作简单的内容采集器的原理分析
Oct 01 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
Oct 10 PHP
php可变长参数处理函数详解
Feb 22 PHP
php下载远程大文件(获取远程文件大小)的实例
Jun 17 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 PHP
phpinfo的知识点总结
Oct 10 PHP
PHP操作Redis常用命令的实例详解
Dec 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 smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
记录几个javascript有关的小细节
2007/04/02 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
电子商务应届生求职信
2013/11/16 职场文书
高中政治教学反思
2014/01/18 职场文书
企业承诺书怎么写
2014/05/24 职场文书
分居协议书范本
2014/11/03 职场文书
怎么写工作检讨书
2014/11/16 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL